เมื่อกลางปีที่ผ่านมามีรายงานการโจมตี CVE-2021-42574 ที่อาศัยอักขระ Unicode สำหรับการพิมพ์จากขวาไปซ้าย ทำให้ตัวแก้ไขโค้ดแสดงอักขระกลับข้างเปิดทางให้คนร้ายอาจจะซ่อนโค้ดเอาไว้ภายในซอร์สโค้ดเอง โดยที่โปรแกรมเมอร์มองไม่เห็นซอร์สโค้ดนั้น
ปัญหานี้ไม่ใช่ปัญหาของภาษาโปรแกรมมิ่งโดยตรง แต่วันนี้ทาง Rust ก็ออกมาประกาศว่าจะป้องกันปัญหานี้ด้วยการเพิ่มกฎตรวจสอบโค้ด (lint) เข้าไปใน rustc ทำให้โค้ดที่มีอักขระ Unicode เหล่านี้คอมไพล์ไม่ผ่าน หากต้องการใช้งานจริงๆ ต้อง escape ตัวอักขระเสียก่อน
Rust เป็นภาษาโปรแกรมมิ่งที่มีแนวทางควบคุมให้โปรแกรมเมอร์มีสุขลักษณะการเขียนโค้ดที่ดีโดยเปิดกฎการตรวจสอบไว้เป็นค่ามาตรฐาน หากโปรแกรมเมอร์ไม่แก้ไขหรือขอยกเว้นคำเตือนบางจุดโดยเฉพาะก็จะแจ้งเตือนเป็นมาตรฐานโดยไม่ต้องเปิดออปชั่นเพิ่มเติม หรือบางกรณีก็คอมไพล์ไม่ผ่านไปเลย
ทาง Rust ตรวจสอบแพ็กเกจที่เผยแพร่ผ่าน crates.io พบว่ามีแพ็กเกจเพียง 5 ตัวที่มีอักขระที่เข้าข่าย และทุกแพ็กเกจไม่ได้ใส่อักขณะเพื่อมุ่งร้ายแต่อย่างใด และกฎการตรวจสอบโค้ดจะเพิ่มใน Rust 1.56.1 ที่เปิดให้ดาวน์โหลดวันนี้
ที่มา - Rust
Comments
สุขลักษณะการเขียนโค้ด มาจากภาษาอังกฤษว่าอะไรอะครับ
เดาว่าเป็น Coding Conventions
สงสัยว่าจะเป็น Code Hygiene :D
rust syntax rules เขาก็คุมเข้มเรื่อง coding quality มาก
ถ้าเขียนแบบไม่ make sense บางทีคอมไพล์ไม่ได้
แต่จากบทความน่าจะหมายถึง coding convention แหละมั้ง(เดา)