PHP eval - php, सुरक्षा, eval के लिए प्रतिबंध

मेरे पास तार्किक अभिव्यक्तियां हैं जिन्हें मुझे मूल्यांकन करने की आवश्यकता है। इसके पैरामीटर के साथ पैरामीटर किए गए कुछ अभिव्यक्ति टेम्पलेट के बाद, ये अभिव्यक्ति इस तरह दिख सकती हैं:

$expr1 = "1 or 0 and not(0 or 0)";
$expr2 = ""editor" == "editor" and not(0 = 1) and 10 > 5";

इसलिए, मुझे संख्याओं, स्ट्रिंग अक्षर, साथ ही तार्किक और बीजगणितीय ऑपरेटरों और उनके बीच गोल ब्रैकेट को संभालने की आवश्यकता है।

PHP eval का उपयोग करते समय मुझे अवांछित असुरक्षित क्षमताओं भी मिलती हैं, जैसे सिस्टम फ़ंक्शन कॉल, और इसी तरह।

तो, PHP eval प्रतिबंधित करने का कोई तरीका है, या हो सकता है कि कुछ बेहतर समाधान हो?

धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

आप यह जांचने के लिए टोकननाइज़र का उपयोग कर सकते हैं कि अभिव्यक्ति में फ़ंक्शन कॉल नहीं हैं।

देखें सुरक्षित eval () कक्षा एक उदाहरण के लिए।


जवाब के लिए 0 № 2

ठीक है, मुझे एक और समाधान मिला।मैंने सोचा है कि मैं PHP लॉम DOMXPath का उपयोग कर सकता हूं :: मेरी तार्किक अभिव्यक्ति का मूल्यांकन करने के लिए मूल्यांकन करता हूं। इसलिए, मुझे एक समाधान समाधान मिला, जिसमें कोई सुरक्षा समस्या नहीं है। मुझे लगता है कि मेरी समस्या हल हो गई है :)


संबंधित सवाल
सबसे लोकप्रिय