คำถามติดแท็ก malicious-code

13
เพราะเหตุใดคุณสมบัติที่คล้ายกันของ Eval จึงถือเป็นความชั่วร้ายในทางตรงกันข้ามกับคุณลักษณะที่เป็นอันตรายอื่น ๆ
ส่วนใหญ่ภาษาสมัยใหม่ (ซึ่งจะถูกตีความอย่างใด) มีชนิดของบางEVALฟังก์ชั่น ฟังก์ชั่นดังกล่าวเรียกใช้งานรหัสภาษาโดยพลการส่วนใหญ่เวลาผ่านไปเป็นอาร์กิวเมนต์หลักเป็นสตริง (ภาษาที่แตกต่างกันอาจเพิ่มคุณสมบัติเพิ่มเติมให้กับฟังก์ชั่น eval) ฉันเข้าใจว่าผู้ใช้ไม่ควรได้รับอนุญาตให้ใช้งานฟังก์ชั่นนี้ ( แก้ไขเช่นนำข้อมูลเข้าโดยตรงหรือโดยอ้อมจากผู้ใช้ที่ต้องการส่งผ่านeval) โดยเฉพาะกับซอฟต์แวร์ฝั่งเซิร์ฟเวอร์เนื่องจากสามารถบังคับให้กระบวนการเรียกใช้รหัสที่เป็นอันตรายได้ ด้วยวิธีนี้บทเรียนและชุมชนบอกให้เราไม่ใช้การประเมินผล อย่างไรก็ตามมีหลายครั้งที่evalมีประโยชน์และใช้งานอยู่: กฎการเข้าถึงแบบกำหนดเองไปยังองค์ประกอบซอฟต์แวร์ (IIRC OpenERP มีวัตถุir.ruleที่สามารถใช้รหัสหลามแบบไดนามิก) การคำนวณที่กำหนดเองและ / หรือเกณฑ์ (OpenERP มีฟิลด์เช่นนั้นเพื่ออนุญาตการคำนวณรหัสที่กำหนดเอง) ตัวแยกวิเคราะห์รายงาน OpenERP (ใช่ฉันรู้ว่าฉันทำให้คุณประหลาดใจกับสิ่งที่ OpenERP ... แต่มันเป็นตัวอย่างหลักที่ฉันมี) เอฟเฟกต์การสะกดในบางเกม RPG ดังนั้นพวกเขาจึงมีการใช้งานที่ดีตราบใดที่พวกเขามีการใช้อย่างถูกต้อง ข้อได้เปรียบหลักคือคุณลักษณะนี้ช่วยให้ผู้ดูแลระบบสามารถเขียนโค้ดที่กำหนดเองโดยไม่ต้องสร้างไฟล์เพิ่มเติมและรวมไว้ด้วย (แม้ว่าเฟรมเวิร์กส่วนใหญ่ที่ใช้คุณสมบัติ eval ก็มีวิธีการระบุไฟล์โมดูลแพ็กเกจ ... เพื่ออ่านจาก) อย่างไรก็ตาม eval เป็นสิ่งชั่วร้ายในวัฒนธรรมสมัยนิยม สิ่งที่ต้องการเจาะเข้าไปในระบบของคุณอยู่ในใจ อย่างไรก็ตามมีฟังก์ชั่นอื่น ๆ ที่อาจเป็นอันตรายหากผู้ใช้เข้าถึง: ยกเลิกการเชื่อมโยงอ่านเขียน (ซีแมนทิกส์ไฟล์) การจัดสรรหน่วยความจำและเลขคณิตตัวชี้การเข้าถึงโมเดลฐานข้อมูล (แม้ว่าจะไม่พิจารณากรณี SQL-injectable) ดังนั้นโดยทั่วไปแล้วส่วนใหญ่เวลาที่โค้ดใด ๆไม่ถูกเขียนอย่างถูกต้องหรือไม่ได้ดูอย่างถูกต้อง …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.