เพื่อความก้าวหน้าของ ความรู้และการศึกษาและ วิทยาศาสตร์และเทคโนโลยี โดยทั่วไปการใช้งานไฟล์ การกระทำที่ดีขึ้นและมีประสิทธิภาพมากขึ้นมาตรการหรือคำแนะนำ (แนวปฏิบัติที่ดี) เพื่อให้บรรลุเป้าหมายสูงสุดของ นำไปสู่การบรรลุผล กิจกรรมหรือกระบวนการใด ๆ
และ การเขียนโปรแกรม ทั้ง การพัฒนาซอฟต์แวร์ เช่นเดียวกับกิจกรรมทางวิชาชีพและไอทีอื่น ๆ ก็มีเป็นของตัวเอง “ แนวปฏิบัติที่ดี” เกี่ยวข้องกับทรงกลมจำนวนมากโดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับ โลกไซเบอร์ ของผลิตภัณฑ์ซอฟต์แวร์ที่ผลิต และในโพสต์นี้เราจะนำเสนอบางส่วน «แนวทางปฏิบัติที่ดีในการเข้ารหัส»จากเว็บไซต์ที่น่าสนใจและมีประโยชน์ชื่อว่า "Secure Code Wiki"มากเกี่ยวกับ แพลตฟอร์มการพัฒนา อิสระและเปิดกว้างเป็นส่วนตัวและปิด
ก่อนที่จะเข้าสู่หัวข้อตามปกติเราจะทิ้งลิงก์บางส่วนไปยังสิ่งพิมพ์ก่อนหน้านี้ที่เกี่ยวข้องกับหัวข้อของ «แนวปฏิบัติที่ดีในการเขียนโปรแกรมหรือการพัฒนาซอฟต์แวร์».
"…แนวปฏิบัติที่ดีเกิดขึ้นและเผยแพร่โดย "รหัสสำหรับการริเริ่มการพัฒนา" ของธนาคารเพื่อการพัฒนาระหว่างอเมริกาในขอบเขตของ ซอฟต์แวร์ลิขสิทธิ์ซึ่งควรดำเนินการเมื่อพัฒนาผลิตภัณฑ์ซอฟต์แวร์ (เครื่องมือดิจิทัล) โดยเฉพาะอย่างยิ่งฟรีและเปิดกว้าง" ใบอนุญาตสำหรับการพัฒนาซอฟต์แวร์เสรีและซอฟต์แวร์แบบเปิด: แนวปฏิบัติที่ดี
Secure Code Wiki: แนวทางปฏิบัติในการเข้ารหัสที่ดี
Secure Code Wiki คืออะไร?
ตามที่ระบุไว้ สถาน:
"Secure Code Wiki เป็นสุดยอดของแนวทางปฏิบัติในการเข้ารหัสที่ปลอดภัยสำหรับภาษาที่หลากหลาย"
และคุณคือ แนวปฏิบัติที่ดี และเว็บไซต์ของ "Secure Code Wiki" ได้รับการสร้างและดูแลโดยองค์กรของอินเดียที่เรียกว่า ปายาตู.
ตัวอย่างแนวปฏิบัติที่ดีตามประเภทของภาษาโปรแกรม
เนื่องจากเว็บไซต์เป็นภาษาอังกฤษเราจะแสดงบางส่วน ตัวอย่างของการเข้ารหัสที่ปลอดภัย เกี่ยวกับต่างๆ ภาษาโปรแกรมบางส่วนฟรีและเปิดและอื่น ๆ เป็นแบบส่วนตัวและแบบปิดที่นำเสนอโดยเว็บไซต์ดังกล่าว สำรวจศักยภาพและคุณภาพของเนื้อหา โหลดแล้ว
นอกจากนี้สิ่งสำคัญคือต้องเน้นว่า แนวทางปฏิบัติที่ดี แสดงบนไฟล์ แพลตฟอร์มการพัฒนา ดังต่อไปนี้:
- NET.
- ชวา
- Java สำหรับ Android
- คอตลิน
- NodeJS
- วัตถุประสงค์ค
- PHP
- หลาม
- ทับทิม
- รวดเร็ว
- WordPress
พวกเขาแบ่งออกเป็นหมวดหมู่ต่อไปนี้สำหรับภาษาเดสก์ท็อป:
- A1 - การฉีด (ฉีดยา)
- A2 - การรับรองความถูกต้องเสีย (การตรวจสอบสิทธิ์เสีย)
- A3 - การเปิดรับข้อมูลที่ละเอียดอ่อน (การเปิดรับข้อมูลที่ละเอียดอ่อน)
- A4 - เอนทิตีภายนอก XML (XML ภายนอกเอนทิตี / XXE)
- A5 - การควบคุมการเข้าถึงผิดพลาด (การควบคุมการเข้าถึงเสีย)
- A6 - การกำหนดค่าความปลอดภัย (การกำหนดค่าความปลอดภัยผิด)
- A7 - การเขียนสคริปต์ข้ามไซต์ (การเขียนสคริปต์ข้ามไซต์ / XSS)
- A8 - deserialization ที่ไม่ปลอดภัย (Deserialization ที่ไม่ปลอดภัย)
- A9 - การใช้ส่วนประกอบที่มีช่องโหว่ที่ทราบ (การใช้ส่วนประกอบที่มีช่องโหว่ที่เป็นที่รู้จัก)
- A10 - การลงทะเบียนและการกำกับดูแลไม่เพียงพอ (การบันทึกและการตรวจสอบไม่เพียงพอ)
และยังแบ่งออกเป็นหมวดหมู่ต่อไปนี้สำหรับภาษามือถือ:
- M1 - การใช้งานแพลตฟอร์มอย่างไม่เหมาะสม (การใช้งานแพลตฟอร์มที่ไม่เหมาะสม)
- M2 - การจัดเก็บข้อมูลที่ไม่ปลอดภัย (การจัดเก็บข้อมูลที่ไม่ปลอดภัย)
- M3 - การสื่อสารที่ไม่ปลอดภัย (การสื่อสารที่ไม่ปลอดภัย)
- M4 - การตรวจสอบสิทธิ์ที่ไม่ปลอดภัย (การรับรองความถูกต้องที่ไม่ปลอดภัย)
- M5 - การเข้ารหัสไม่เพียงพอ (การเข้ารหัสไม่เพียงพอ)
- M6 - การอนุญาตที่ไม่ปลอดภัย (การอนุญาตที่ไม่ปลอดภัย)
- M7 - คุณภาพรหัสลูกค้า (คุณภาพรหัสลูกค้า)
- M8 - การจัดการโค้ด (การปลอมแปลงรหัส)
- M9 - วิศวกรรมย้อนกลับ (วิศวกรรมย้อนกลับ)
- M10 - ฟังก์ชั่นแปลก ๆ (ฟังก์ชันภายนอก)
ตัวอย่างที่ 1: .Net (A1- Injection)
การใช้ตัวทำแผนที่เชิงสัมพันธ์ออบเจ็กต์ (ORM) หรือโพรซีเดอร์ที่เก็บไว้เป็นวิธีที่มีประสิทธิภาพที่สุดในการตอบโต้ช่องโหว่การแทรก SQL
ตัวอย่างที่ 2: Java (A2 - การพิสูจน์ตัวตนเสีย)
เมื่อใดก็ตามที่เป็นไปได้ให้ใช้การรับรองความถูกต้องแบบหลายปัจจัยเพื่อป้องกันไม่ให้มีการบรรจุข้อมูลประจำตัวโดยอัตโนมัติกำลังดุร้ายและใช้การโจมตีซ้ำกับข้อมูลรับรองที่ขโมย
ตัวอย่างที่ 3: Java สำหรับ Android (M3 - การสื่อสารที่ไม่ปลอดภัย)
จำเป็นต้องใช้ SSL / TLS กับช่องทางการขนส่งที่แอปพลิเคชันมือถือใช้เพื่อส่งข้อมูลที่ละเอียดอ่อนโทเค็นเซสชันหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ ไปยัง API แบ็กเอนด์หรือบริการเว็บ
ตัวอย่างที่ 4: Kotlin (M4 - การตรวจสอบสิทธิ์ที่ไม่ปลอดภัย)
หลีกเลี่ยงรูปแบบที่อ่อนแอ
ตัวอย่างที่ 5: NodeJS (A5 - การควบคุมการเข้าถึงไม่ดี)
การควบคุมการเข้าถึงของโมเดลควรบังคับใช้การเป็นเจ้าของระเบียนแทนที่จะอนุญาตให้ผู้ใช้สร้างอ่านอัปเดตหรือลบบันทึกใด ๆ
ตัวอย่างที่ 6: วัตถุประสงค์ C (M6 - การอนุญาตไม่ปลอดภัย)
แอปพลิเคชันควรหลีกเลี่ยงการใช้ตัวเลขที่คาดเดาได้เป็นข้อมูลอ้างอิงในการระบุ
ตัวอย่างที่ 7: PHP (A7 - การเขียนสคริปต์ข้ามไซต์)
เข้ารหัสอักขระพิเศษทั้งหมดโดยใช้ htmlspecialchars () หรือ htmlentities () [ถ้าอยู่ในแท็ก html]
ตัวอย่างที่ 8: Python (A8 - Deserialization ที่ไม่ปลอดภัย)
โมดูล pickle และ jsonpickle ไม่ปลอดภัยห้ามใช้เพื่อยกเลิกการกำหนดค่าข้อมูลที่ไม่น่าเชื่อถือ
ตัวอย่างที่ 9: Python (A9 - การใช้ส่วนประกอบที่มีช่องโหว่ที่เป็นที่รู้จัก)
เรียกใช้แอปพลิเคชันกับผู้ใช้ที่มีสิทธิพิเศษน้อยที่สุด
ตัวอย่างที่ 10: Swift (M10 - ฟังก์ชันแปลก ๆ )
ลบฟังก์ชันลับๆที่ซ่อนอยู่หรือการควบคุมความปลอดภัยการพัฒนาภายในอื่น ๆ ที่ไม่ได้ตั้งใจให้นำออกใช้ในสภาพแวดล้อมการใช้งานจริง
ตัวอย่างที่ 11: WordPress (ปิดใช้งาน XML-RPC)
XML-RPC เป็นคุณลักษณะของ WordPress ที่ช่วยให้สามารถถ่ายโอนข้อมูลระหว่าง WordPress และระบบอื่น ๆ ปัจจุบัน REST API ถูกแทนที่เป็นส่วนใหญ่ แต่ยังรวมอยู่ในการติดตั้งเพื่อความเข้ากันได้แบบย้อนหลัง หากเปิดใช้งานใน WordPress ผู้โจมตีสามารถทำการโจมตีแบบ brute force, pingback (SSRF) และอื่น ๆ
ข้อสรุป
เราหวังว่าสิ่งนี้ "โพสต์เล็ก ๆ น้อย ๆ ที่มีประโยชน์" เกี่ยวกับเว็บไซต์ที่เรียกว่า «Secure Code Wiki»
, ซึ่งนำเสนอเนื้อหาที่มีคุณค่าที่เกี่ยวข้องกับ «แนวทางปฏิบัติที่ดีในการเข้ารหัส»; เป็นที่สนใจและเป็นประโยชน์อย่างยิ่งสำหรับทุกคน «Comunidad de Software Libre y Código Abierto»
และมีส่วนช่วยอย่างมากต่อการแพร่กระจายของระบบนิเวศที่ยอดเยี่ยมขนาดมหึมาและการเติบโตของการใช้งาน «GNU/Linux»
.
สำหรับตอนนี้ถ้าคุณชอบสิ่งนี้ publicación
, อย่าหยุด แบ่งปัน กับผู้อื่นบนเว็บไซต์ช่องทางกลุ่มหรือชุมชนเครือข่ายสังคมหรือระบบการส่งข้อความที่คุณชื่นชอบโดยเฉพาะอย่างยิ่งฟรีเปิดกว้างและ / หรือปลอดภัยมากขึ้นตาม Telegram, สัญญาณ, สัตว์แมสทอดอน หรืออื่น ๆ ของ Fediverseโดยเฉพาะอย่างยิ่ง
และอย่าลืมเยี่ยมชมหน้าแรกของเราที่ «DesdeLinux» เพื่อสำรวจข่าวสารเพิ่มเติมรวมทั้งเข้าร่วมช่องทางการของเราที่ โทรเลขของ DesdeLinux. ในขณะที่สำหรับข้อมูลเพิ่มเติมคุณสามารถไปที่ใดก็ได้ ห้องสมุดออนไลน์ ในขณะที่ OpenLibra y เจดไอที, เพื่อเข้าถึงและอ่านหนังสือดิจิทัล (PDF) ในหัวข้อนี้หรืออื่น ๆ
บทความที่น่าสนใจควรเป็นข้อบังคับสำหรับนักพัฒนาทุกคน ..