दरअसल, जादू उद्धरण बंद करें।
पीएचपी, जहां यह उचित, उपयोग फिल्टर है में:
$inUser = $_POST['user'];
$outUser = filter_var($inUser, FILTER_SANITIZE_STRING);
फिल्टर HTML टैग को निकाल देते हैं और विभिन्न वर्ण से बचें।
इसके अलावा, आप अपने डेटाबेस आप के लिए यह बच जाने कर सकते हैं:
$inUser = $_POST['user'];
$outUser = mysqli_real_escape_string($conn, $inUser);
यह डबल कोट, एकल कोट, आदि
अंत में, आप पैरामिट्रीकृत प्रश्नों का उपयोग करना चाहिए जैसे MySQL विशिष्ट विशेष वर्ण निकल जाता है :
$sql = "SELECT user FROM table WHERE user = ?";
$stmt = $pdo->prepare($sql);
$params = array($outUser);
$stmt->execute($params);
parameterized क्वेरी को स्वचालित रूप से तार, आदि के आसपास उद्धरण जोड़ें, और कुछ अन्य प्रतिबंध है कि SQL इंजेक्शन भी अधिक di बनाते हैं fficult।
मैं उस क्रम में सभी तीनों का उपयोग करता हूं।
स्रोत
2010-03-17 22:36:06
क्या कोई कारण है कि आप mysql_real_escape_string का उपयोग करने का विरोध कर रहे हैं? –
डुनो आपको यह कहां मिला, लेकिन स्प्रिंटफ कुछ भी नहीं बच निकला। –
एसीटीएल यह एसक्यूएल इंजेक्शन खोजने के लिए असाइनमेंट का एक हिस्सा है। मैंने परिदृश्य को अपने स्थानीय में दोहराया और सभी सामान्य एसक्यूएल इंजेक्शन $ a = sprintf ("तालिका से उपयोगकर्ता का चयन करें जहां उपयोगकर्ता = '% s'", $ _POST ["user"]); echo $ मैं उद्धरण प्राप्त कर रहा हूं \। क्या मध्य में कुछ ऐसा है जो उद्धरण से बच सकता है? – user294924