Secure Guestbook เป็นเว็บแอปพลิเคชันที่เขียนด้วย PHP การคงอยู่ของข้อมูลจะถูกนำไปใช้กับ MySQL
การสาธิตนี้เขียนขึ้นเพื่อแสดงให้เห็นถึงวิธีการของฉันในสถานการณ์ "คุณไม่มีอะไรนอกจาก PHP และ MySQL คุณต้องเขียนแอพที่ปลอดภัยแสดงสิ่งที่คุณทำได้"
นี่อาจเป็นความท้าทายสำหรับคุณ: ปรับใช้แอพนี้ทรมานมันแฮ็คมันพิสูจน์ว่ามีข้อบกพร่องระดับแอพ ฉันแน่ใจว่า 95% ไม่มี แสดงให้ฉันเห็นว่าฉันผิด
แอพนี้ไม่ได้เกี่ยวกับการคิดค้นล้อใหม่ ใช่มีเฟรมเวิร์กและ LIBS ที่ดีมากมาย
นี่เป็นเรื่องเกี่ยวกับความท้าทายในการทำความเข้าใจธรรมชาติภายในของเฟรมเวิร์กที่เราใช้ทุกวันและส่งผลกระทบต่อความปลอดภัยความสามารถในการขยายและการบำรุงรักษาของแอพที่เราสร้างขึ้นมาได้อย่างไร
ภารกิจคือการเขียนแอพสาธิตใน PHP บริสุทธิ์โดยไม่มี LIBS ของบุคคลที่สาม
แอพนี้เป็นสมุดเยี่ยมที่มี OPTs ต่อไปนี้: การสมัครใช้งานผู้ใช้การเข้าสู่ระบบและการออกจากระบบ, สร้างข้อความ, แก้ไข, ลบ, เพิ่มการตอบกลับ
งานคือการเขียนแอพสาธิตใน PHP บริสุทธิ์โดยไม่มี LIBs ของบุคคลที่สามเพื่อแสดงให้เห็นว่าการออกแบบที่เหมาะสมเป็นวิธีที่ดีที่สุดในการสร้างแอปพลิเคชันที่ปลอดภัย
แม้จะมีความวุ่นวายที่ชัดเจนในการเขียนแอพง่ายๆในลักษณะที่เกินความจริง แต่ก็มีข้อบกพร่องที่ชัดเจนยิ่งขึ้นของวิธีการนั้น: คุณควบคุมแอพและจมน้ำตายในข้อ จำกัด ของความเรียบง่าย
ใช่แล้วมันคุ้มค่าที่จะเขียนกรอบ MVC ที่เรียบง่าย แต่ใช้งานได้มากกว่าที่จะเขียนสคริปต์ PHP ที่ไม่สามารถขยายได้ 10 สคริปต์ผสมกับ HTML
สภาพแวดล้อมที่มีลักษณะคล้าย MVC แบบหม้อไอน้ำถูกเขียนขึ้นตั้งแต่เริ่มต้นสำหรับการสาธิตนี้ อินเทอร์เฟซใน HTML ที่ไม่มีความเรียบง่ายบริสุทธิ์
การประมวลผลทั้งหมดจะทำรอบวงจรชีวิตของวัตถุคำขอซึ่งกำลังกลายพันธุ์ในระหว่างลำดับต่อไปนี้:
เนื่องจากความท้าทายเป็นหลักเกี่ยวกับการเขียนแอพที่ปลอดภัยที่สุดเท่าที่จะเป็นไปได้รายการ mesaures ต่อไปนี้ที่ใช้ในการบังคับใช้แอพ:
เพื่อ จำกัด จำนวนความพยายามในการเบรกที่ Fail2ban ที่เรียบง่ายในท้องถิ่นคือ Buil-in
คุณสมบัติหลักคือ:
ห้ามเกณฑ์สำหรับข้อผิดพลาดและการร้องขอปริมาณสามารถกำหนดค่าได้
จำนวนพื้นฐานของการทดสอบที่มีให้สำหรับระบบย่อยกระดูกสันหลัง
สิ่งที่ต้องมีก่อน: PHP 7 (PDO_MYSQL, OpenSSL), นักแต่งเพลง (สำหรับ phpunit เท่านั้น), เซิร์ฟเวอร์ HTTP
WEBAPP_BASEDIR - should point to src/ folder
WEBAPP_STORAGE_MYSQL_HOST
WEBAPP_STORAGE_MYSQL_USER
WEBAPP_STORAGE_MYSQL_PASSWORD
WEBAPP_STORAGE_MYSQL_DB
src/public ด้วย document document index.php เริ่มต้น phpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan และ getRequestsTillBan หากจำเป็น