2011-01-17 5 views
19

क्या ast.literal_eval(node_or_string) के मूल्यांकन के लिए कोई ज्ञात तरीका नहीं है वास्तव में सुरक्षित नहीं है?पायथन 3, क्या ast.literal_eval (node_or_string) में कोई ज्ञात सुरक्षा छेद हैं?

यदि हां, तो उनके लिए पैच उपलब्ध हैं?

(मैं पहले से ही PyPy [सैंडबॉक्स], जो संभवतः अधिक सुरक्षित है के बारे में पता है, लेकिन जब तक जवाब हाँ है तो हैं नहीं, मेरी जरूरतों के लिए पर्याप्त नाबालिग है कि मुझे लगता है कि अब तक नहीं जा रहा हो जाएगा रहे हैं।)

+0

नहीं, लेकिन मैं इसे साबित करने के लिए सीबीए। –

उत्तर

41

documentation कहता है कि यह सुरक्षित है, और bug tracker में literal_eval की सुरक्षा के सापेक्ष कोई बग नहीं है, इसलिए आप शायद यह मान सकते हैं कि यह सुरक्षित है।

इसके अलावा, according to the source, literal_eval एक पायथन एएसटी (स्रोत पेड़) में स्ट्रिंग को पार करता है, और केवल तभी लौटाता है जब यह एक शाब्दिक हो। कोड कभी निष्पादित नहीं होता है, केवल पार्स किया जाता है, इसलिए सुरक्षा जोखिम होने का कोई कारण नहीं है।

+4

+1 कारण यहां अधिक जवाब नहीं हैं कि कुछ भी और कहने की आवश्यकता नहीं है। –

+1

ठीक है, यह साबित करना हमेशा मुश्किल होता है कि कोई जोखिम नहीं है, लेकिन तथ्य यह है कि कोड वास्तव में कभी निष्पादित नहीं किया जाता है, यह समझाने में मदद करनी चाहिए कि इसमें अधिक जोखिम नहीं है। – madjar

+2

जोखिम पाइथन का उपयोग करने के समान ही है। –

संबंधित मुद्दे