หากคุณต้องเลือกเทคนิคที่คุณโปรดปราน (ฉลาด) เพื่อป้องกันการเข้ารหัสพวกเขาจะเป็นอย่างไร? แม้ว่าภาษาปัจจุบันของฉันคือ Java และ Objective-C (มีพื้นหลังเป็น C ++) แต่สามารถตอบได้ทุกภาษา เน้นที่นี่จะเป็นเทคนิคการป้องกันที่ฉลาดกว่าที่ 70% + ของเราที่นี่รู้อยู่แล้ว ดังนั้นถึงเวลาขุดลึกลงไปในกระเป๋าของคุณ
กล่าวอีกนัยหนึ่งลองนึกถึงตัวอย่างที่ไม่น่าสนใจ :
if(5 == x)
แทนif(x == 5)
: เพื่อหลีกเลี่ยงการมอบหมายที่ไม่ได้ตั้งใจ
นี่คือตัวอย่างของวิธีปฏิบัติในการตั้งโปรแกรมการป้องกันที่น่าสนใจ (ตัวอย่างเฉพาะภาษามีอยู่ใน Java):
- ล็อคตัวแปรของคุณจนกว่าคุณจะรู้ว่าคุณต้องเปลี่ยนพวกเขา
นั่นคือคุณสามารถประกาศทั้งหมดตัวแปรจนกว่าคุณจะรู้ว่าคุณจะต้องเปลี่ยนตรงจุดนี้คุณสามารถเอาfinal
final
ข้อเท็จจริงที่ไม่รู้จักทั่วไปอย่างหนึ่งคือสิ่งนี้ใช้ได้กับวิธีการพารามิเตอร์:
public void foo(final int arg) { /* Stuff Here */ }
- เมื่อมีสิ่งเลวร้ายเกิดขึ้นให้ทิ้งหลักฐานไว้ข้างหลัง
มีหลายสิ่งที่คุณสามารถทำได้เมื่อคุณมีข้อยกเว้น: การเข้าสู่ระบบอย่างเห็นได้ชัดและทำการล้างข้อมูลบางอย่างอาจเป็นเพียงเล็กน้อย แต่คุณสามารถทิ้งหลักฐานไว้ได้ (เช่นการตั้งค่าตัวแปรให้กับค่าของ Sentinel เช่น "UNABLE TO LOAD FILE" หรือ 99999 จะมีประโยชน์ในตัวดีบักในกรณีที่คุณเกิดข้อcatch
ผิดพลาดผ่านบล็อก -block)
- เมื่อพูดถึงเรื่องความมั่นคง: มารอยู่ในรายละเอียด
สอดคล้องกับไลบรารีอื่น ๆ ที่คุณใช้อยู่ ตัวอย่างเช่นใน Java หากคุณกำลังสร้างวิธีที่แยกช่วงของค่าจะทำให้ขอบเขตที่รวมต่ำกว่าและขอบเขตพิเศษด้านบนพิเศษสิ่งนี้จะทำให้สอดคล้องกับวิธีการต่าง ๆString.substring(start, end)
ซึ่งทำงานในลักษณะเดียวกัน คุณจะพบกับวิธีการเหล่านี้ทั้งหมดใน Sun JDK ที่จะทำงานในลักษณะนี้เนื่องจากมันทำให้การดำเนินการต่างๆรวมถึงการวนซ้ำขององค์ประกอบที่สอดคล้องกับอาร์เรย์โดยที่ดัชนีมาจากศูนย์ ( รวม ) ถึงความยาวของอาร์เรย์ ( พิเศษ )
ดังนั้นอะไรคือแนวปฎิบัติการป้องกันที่คุณโปรดปราน
อัปเดต: หากคุณยังไม่ได้รู้สึกอิสระที่จะพูดสอดฉันจะให้โอกาสสำหรับคำตอบเพิ่มเติมที่จะเข้ามาก่อนที่ฉันจะเลือกคำตอบอย่างเป็นทางการ