บริบท
ฉันมีคอลเล็กชันของหน้า HTML แบบคงที่ (ประมาณ 10,000 หน้า) ที่สร้างโดยแอปพลิเคชันบางตัวซึ่งฉันไม่สามารถควบคุมได้ หน้าเหล่านี้ให้บริการโดย NginX จาก a ที่ตั้ง
บล็อก.
เพจอาจมีข้อมูลที่ละเอียดอ่อน ฉันต้องการบล็อกการแสดงเพจตามข้อมูลระบุตัวตนของผู้ใช้และ "แฟล็ก" ในเพจ
แฟล็กเหล่านี้สามารถนำไปใช้ได้โดยก <meta name=keyword content="flag1 flag2 flagn">
ธาตุ. เมื่อมีองค์ประกอบดังกล่าว ควรตรวจสอบ "ข้อมูลประจำตัว"
ความคิดของฉันคือการสแกนการตอบกลับคำขอก่อนที่จะส่งคืนให้กับผู้ใช้ สำหรับสิ่งนี้ฉันต้องการ
วิธีส่งการตอบสนองแบบเต็ม (ส่วนหัว + เนื้อหา) ไปยังโค้ดที่กำหนดเองเพื่อให้สามารถแยกวิเคราะห์องค์ประกอบ <head> ได้
หากไม่มีแฟล็ก การตอบกลับจะถูกส่งคืนโดยไม่มีการเปลี่ยนแปลง
หากมีแฟล็กและผู้ใช้ไม่มีข้อมูลประจำตัว เขาจะถูกขอให้ระบุตัวตน
หากมีแฟล็กและผู้ใช้มีสิทธิ์ดู การตอบกลับจะถูกส่งกลับโดยไม่มีการเปลี่ยนแปลง
หากมีแฟล็กและผู้ใช้ไม่มีสิทธิ์เห็น หน้าแสดงข้อผิดพลาดจะถูกส่งกลับแทนการตอบกลับ
ในที่สุดก็ฟันธง <meta>
องค์ประกอบจะถูกลบเพื่อหลีกเลี่ยงการรั่วไหลของคำแนะนำตัวกรอง
วิธีที่จะส่งผ่านข้อมูลรหัสผู้ใช้นี้เกี่ยวกับข้อมูลประจำตัวปัจจุบัน (ชื่อผู้ใช้ ค่าทดสอบ ข้อมูลที่เป็นประโยชน์ใดๆ เช่น การประทับเวลาระบุตัวตน â¦)
รหัสผู้ใช้จะขึ้นอยู่กับ "ฐานข้อมูล" (คำนี้ไม่ได้หมายความถึงการใช้เอ็นจิ้น DB จริง) ที่มีสิทธิ์ของผู้ใช้และใช้ฟังก์ชันการหมดเวลา
สามารถใช้รหัสผู้ใช้เป็นสคริปต์ FastCGI ได้หรือไม่ ถ้าเป็นเช่นนั้น อะไรคือคำสั่งให้ส่งคำตอบแบบเต็ม?
การทดลองเบื้องต้น
การระบุผู้ใช้ในปัจจุบันต้องไม่มีเงื่อนไข: เมื่อ auth_basic
เปิดใช้งานใน ที่ตั้ง
ผู้ใช้ต้องระบุตัวเอง แม้กระทั่งเพื่อเข้าถึงหน้าสาธารณะ ฉันสามารถลดปัญหานี้ได้ด้วยการมีแขก/ผู้ใช้ทั่วไป/รหัสผ่าน แต่ฉันไม่สามารถมีหน้าคำเตือนก่อนขอข้อมูลรับรองได้
ดังนั้นจึงจำเป็นต้องมีการตรวจสอบสิทธิ์เสมอ หลังจากนั้น อ การอนุญาต: พื้นฐาน some_hash
ส่วนหัวถูกส่งไปพร้อมกับคำขอ แฮชนี้จำเป็นต้องถูกจับเมื่อมีการรับรองความถูกต้องสำหรับการเข้าถึงคุณสมบัติสิทธิ์ของผู้ใช้ในอนาคต
ฉันจะทำอย่างไร
ฉันทราบดีว่าในสถานะปัจจุบัน ข้อกำหนดนี้ไม่มีความปลอดภัยที่แท้จริงเลย (เสี่ยงต่อการถูกโจมตีซ้ำ) ฉันต้องการสร้างหลักฐานของแนวคิดก่อนที่จะดำเนินการต่อไป เป้าหมายของฉันสมเหตุสมผลหรือไม่?
มีวิธีจัดการที่ง่ายกว่านี้ไหม? XSLT? (แม้ว่าข้อมูลรับรองผู้ใช้ปัจจุบันจะต้องป้อนในรูปแบบ)