स्क्रिप्ट PHP में है और डीबी के रूप में मैं MySQL का उपयोग करता हूं। यहां स्क्रिप्ट ही है।क्या यह प्रश्न एसक्यूएल इंजेक्शन से सुरक्षित है?
$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
कुछ लोगों का कहना है कि उपयोगकर्ता चर $ करने के लिए ;DROP TABLE blah;
स्ट्रिंग प्रदान करती है अगर यह तालिका हटाता unsafe_variable।
लेकिन मैं इस उदाहरण की कोशिश की,
http://localhost/test.php?user-input=DROP%20TABLE%20my_table
लेकिन यह तालिका नहीं हटाया था, लेकिन इसके बजाय तालिका में एक नई पंक्ति (;DROP TABLE blah;)
डाला।
क्या कोई मुझे बता सकता है कि एससीएल इंजेक्शन के साथ इस स्क्रिप्ट पर हमला करना संभव है?
'mysqli' या' PDO' और उनके तैयार बयान होगा बेहतर विकल्प बनें। – Powerlord
प्रश्न के सभी प्रतिभागियों के लिए बहुत बहुत धन्यवाद। मुझे सचमुच एहसास हुआ कि केवल 'स्प्रिंटफ' के साथ हम यह सुनिश्चित नहीं कर सकते कि हमारी क्वेरी ** एसक्यूएल-इंजेक्शन ** से सुरक्षित है। इस विशिष्ट उदाहरण के लिए न तो मैं और न ही प्रतिभागी एसक्यूएल-इंजेक्शन को निष्पादित करने का तरीका प्रस्तुत कर सकते हैं। लेकिन मुझे एक अच्छा एसक्यूएल उदाहरण मिला है जहां हम एससीएल-इंजेक्शन निष्पादित कर सकते हैं भले ही हम 'sprintf' का उपयोग करें। एसक्यूएल उदाहरण [यहां] (http://php.net/manual/en/function.mysql-real-escape-string.php "PHP ऑनलाइन मैनुअल") पाया जा सकता है। 'उदाहरण # 2 का एक अनुभाग देखें उदाहरण एसक्यूएल इंजेक्शन अटैक' – Bakhtiyor