ข้อบกพร่องด้านความปลอดภัยทั่วไปที่ฉันต้องค้นหามีอะไรบ้าง [ปิด]


16

ในฐานะที่เป็นนักพัฒนาปลั๊กอิน WP Wannabe สิ่งที่เป็นข้อบกพร่องด้านความปลอดภัยหลัก / หลุมที่ฉันควรมองหา?

ฉันกำลังจะสร้างปลั๊กอินใหม่ที่มีแผงการตั้งค่า (เช่นช่องใส่ของและสิ่งของ) ฉันควรจะกังวลอะไร

ตัวอย่างเช่นการฆ่าเชื้อข้อมูลเป็นเรื่องใหญ่มากเนื่องจากอยู่ใน / wp-admin / area ใครบางคนอาจเป็นอันตรายต่อหน้าปลั๊กอินของฉันโดยตรงและส่งคำขอ POST หรืออะไรทำนองนั้น?

ขอขอบคุณ!

คำตอบ:


16

นี่คือรายการตรวจสอบที่ปรับเปลี่ยนตามรายการตรวจสอบความปลอดภัยของข้อมูลปัจจุบันของฉัน (ใช้งานอยู่) กำลังตรวจสอบความปลอดภัยของข้อมูลที่ใช้สำหรับการทบทวนธีม

  1. ปลั๊กอินควรนำหน้าตัวเลือกทั้งหมด, ฟังก์ชั่นที่กำหนดเอง, ตัวแปรที่กำหนดเอง, และค่าคงที่ที่กำหนดเองด้วย plugin-slug

  2. โปรแกรมเสริมควรใช้หน้าตัวเลือกปลั๊กอินและการตั้งค่าปลั๊กอินโดยเจตนาแทนที่จะใช้สคริปต์การคัดลอกและวางจากบทช่วยสอนเว็บไซต์เช่นหน้าเว็บด้านล่างซึ่งล้าสมัยและไม่มีการรักษาความปลอดภัยข้อมูลที่เหมาะสม:

  3. โปรแกรมเสริมควรใช้add_options_page()ฟังก์ชั่นเพื่อเพิ่มหน้าการตั้งค่าปลั๊กอินในSettingsเมนูแทนที่จะใช้add_menu_page()เพื่อเพิ่มเมนูระดับบนสุด

  4. ปลั๊กอินควรใช้ความสามารถที่เหมาะสม(เช่นmanage_options) สำหรับความสามารถในการเพิ่มหน้าการตั้งค่า

  5. ปลั๊กอินควรบันทึกตัวเลือกในอาร์เรย์เดียวแทนที่จะสร้างหลายตัวเลือกสำหรับหน้าการตั้งค่า การใช้ API การตั้งค่า (ดูด้านล่าง) จะจัดการสิ่งนี้

  6. ปลั๊กอินควรใช้การตั้งค่า API (ดูด้านล่าง) เพื่อรับและบันทึกข้อมูลอินพุตแบบฟอร์มแทนที่จะต้องพึ่งพา$_POSTและ$_REQUESTข้อมูลโดยตรง

  7. สำหรับช่องทำเครื่องหมายและตัวเลือกที่เลือกปลั๊กอินควรใช้checked()และselected()ฟังก์ชั่นสำหรับการส่งออกchecked="checked"และselected="selected"ตามลำดับ

  8. ปลั๊กอินควรตรวจสอบและฆ่าเชื้อข้อมูลที่ไม่น่าเชื่อถือทั้งหมดก่อนที่จะป้อนข้อมูลลงในฐานข้อมูลและควรหลีกเลี่ยงข้อมูลที่ไม่น่าเชื่อถือทั้งหมดก่อนที่จะส่งออกในฟิลด์แบบฟอร์มการตั้งค่าและก่อนที่จะส่งออกในไฟล์เทมเพลตธีม:

  9. ปลั๊กอินควรใช้esc_attr()สำหรับการป้อนข้อความและesc_html()(หรือesc_textarea()ใน WP 3.1) สำหรับ textareas

  10. ปลั๊กอินควรให้การตรวจสอบ nonce หน้าการตั้งค่าอย่างชัดเจนหากไม่ได้ใช้การตั้งค่า API:

  11. ขอแนะนำอย่างยิ่งให้โปรแกรมเสริมใช้การตั้งค่า API ซึ่งใช้งานง่ายกว่าปลอดภัยกว่าและดูแลหน้าการตั้งค่าต่างๆมากมาย:

สำหรับบทแนะนำที่ดีเกี่ยวกับการใช้งาน API การตั้งค่าดู:

หากคุณต้องการตรวจสอบชุดรูปแบบที่มีหน้าการตั้งค่าชุดรูปแบบที่ปลอดภัยและเข้ารหัสอย่างแน่นหนาให้ตรวจสอบชุดรูปแบบนี้:
http://wordpress.org/extend/themes/coraline


และฉันควรเพิ่ม: หากใครเห็นอะไรหายไปจากรายการโปรดแสดงความคิดเห็นเพื่อให้ฉันสามารถเพิ่มลงในรายการตรวจสอบเพื่อช่วยปรับปรุงการตรวจสอบความปลอดภัยสำหรับธีม!
Chip Bennett

ว้าวขอบคุณมาก ฉันสงสัยว่ามันคุ้มค่าไหมที่ทำให้คำถามนี้เป็นวิกิของชุมชนและทำให้แต่ละจุดเหล่านี้เป็นคำตอบของตัวเองเพื่อให้สามารถอภิปรายและทำรายละเอียดได้ดีขึ้น?
goldenapples

ฉันไม่เป็นไร แต่ไม่ต้องการจี้คำถามเดิมของโปสเตอร์ (เว้นแต่ว่าเป็นสิ่งที่ทำใน StackExchange ฉันยังใหม่อยู่ที่นี่ ... )
Chip Bennett

ฉันไม่รู้เหมือนกัน ... ทิ้งไว้กับดุลยพินิจของผู้ดูแลฉันเดาได้ ดูเหมือนว่ามันจะทำให้เกิดคำถามแบบ wiki ที่ยอดเยี่ยมเนื่องจากการปฏิบัติที่สำคัญและดีที่สุดยังคงเป็นไปตามที่คาดหวัง @Rarst?
goldenapples

ฉันสามารถสร้างคำถามใหม่ได้ไหมถ้าจำเป็น?
Chip Bennett

11

มีสองด้านต่อไปนี้:

  1. หลักการพื้นฐาน

    • สิ่งที่เขียนลงในฐานข้อมูลควรตรวจสอบ SQL injects
    • ควรตรวจสอบสิ่งที่พิมพ์ไปที่หน้าจอว่าไม่พิมพ์ JavaScript ที่เป็นอันตราย
    • เมื่อใดก็ตามที่ใครบางคนทำสิ่งที่ควรตรวจสอบว่ามันเป็นความตั้งใจของเขาที่จะทำและเขามีความสามารถที่เหมาะสม
    • มีหลายสิ่งหลายอย่างที่คุณหรือฉันไม่เคยคิดจะตรวจสอบ
  2. ข้อมูลจำเพาะ

    • WordPress รุ่นใหม่ให้ความสำคัญกับความปลอดภัยอย่างจริงจังและมุ่งมั่นที่จะทำให้นักพัฒนาซอฟต์แวร์เป็นเรื่องง่าย
    • ดังนั้นสำหรับสิ่งที่คุณต้องการทำมีโอกาสมากที่สุดที่จะทำมันด้วย WP API
    • ดังนั้นสิ่งที่คุณกำลังทำขั้นตอนแรกคือปรับและศึกษา API ที่เหมาะสม
    • ยิ่งคุณมาจากฟังก์ชั่นทั่วไปและเรียบง่ายสิ่งที่ซับซ้อนมากขึ้นคุณจะต้องศึกษาและดำเนินการ

1
  1. เพิ่มdefined('ABSPATH') or die('Access denied');สคริปต์ของปลั๊กอินที่ใช้งานโดย wordpress โดยตรง
  2. เพิ่มไฟล์ index.php ที่ว่างเปล่าในทุกไดเรกทอรี
  3. เพิ่ม. htaccess ในไดเรกทอรีปลั๊กอินพร้อมคำแนะนำที่จำเป็นเพื่อป้องกันการเข้าถึงไฟล์ปลั๊กอินบางอย่างโดยตรง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.