Stack Inspection ทำงานอย่างไร


11

นี่เป็นสิ่งที่สำคัญสำหรับคำถามอื่น ๆ ของฉันเกี่ยวกับการตรวจสอบกองซ้อน

การตรวจสอบสแต็กเป็นกลไกความปลอดภัยที่นำมาใช้ใน JVM เพื่อจัดการกับรหัสการทำงานที่มาจากสถานที่ที่มีระดับความน่าเชื่อถือต่างกัน คำถามนี้มีจุดมุ่งหมายเพื่อค้นหาคำอธิบายอย่างง่ายของฟังก์ชันการทำงาน ดังนั้น:

การตรวจสอบสแต็คทำงานอย่างไร

คำตอบ:


7

ดู

จากกระดาษ:

... อัลกอริทึมการตรวจสอบสแต็กที่ใช้ในระบบ Java ปัจจุบันสามารถถูกมองว่าเป็นรูปแบบทั่วไปของโมเดลการตรวจสอบสแต็กต่อไปนี้:

ในรุ่นนี้ผู้บริหารหลักเท่านั้นคือ "ระบบ" และ "ไม่น่าเชื่อถือ" สิทธิพิเศษที่มีให้คือ“ เต็ม” เช่นเดียวกัน รุ่นนี้มีลักษณะคล้ายกับระบบตรวจสอบสแต็กที่ใช้ภายใน Netscape Navigator 3.0

ในรูปแบบนี้กรอบสแต็กทั้งหมดจะถูกระบุด้วยหลักการ (“ ระบบ” หากเฟรมเรียกใช้งานโค้ดที่เป็นส่วนหนึ่งของเครื่องเสมือนหรือไลบรารีในตัวและ“ ไม่น่าเชื่อถือ” เป็นอย่างอื่น) และมีธงสิทธิ์ซึ่งอาจ ถูกกำหนดโดยคลาสของระบบซึ่งเลือกที่จะ“ เปิดใช้งานสิทธิพิเศษ” ระบุอย่างชัดเจนว่าต้องการทำสิ่งที่อันตราย คลาสที่ไม่น่าเชื่อถือไม่สามารถตั้งค่าสถานะของสิทธิ์ เมื่อกรอบสแต็กออกไปการตั้งค่าสถานะสิทธิ์ (ถ้ามี) จะหายไปโดยอัตโนมัติ

ขั้นตอนทั้งหมดเกี่ยวกับการดำเนินการที่เป็นอันตรายเช่นการเข้าถึงระบบไฟล์หรือเครือข่ายขั้นแรกให้ใช้อัลกอริทึมการตรวจสอบสแต็กเพื่อตัดสินใจว่าจะอนุญาตให้เข้าถึงได้หรือไม่ อัลกอริทึมการตรวจสอบสแต็คค้นหาเฟรมบนสแต็กของผู้โทรตามลำดับจากใหม่ล่าสุดไปหาเก่าที่สุด การค้นหาสิ้นสุดลงทำให้สามารถเข้าถึงได้เมื่อพบเฟรมสแต็กที่มีการตั้งค่าสิทธิ์ การค้นหายังยุติ, ห้ามการเข้าถึงและการโยนข้อยกเว้น, เมื่อค้นหาเฟรมสแต็กที่ไม่น่าเชื่อถือ (ซึ่งไม่สามารถรับค่าสถานะสิทธิพิเศษ) ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.