Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या मैं सही तरीके से सेनिटाइज/एस्केप कर सकता हूं?

किसी कारण से हमें बैकस्लैश से बचने की भी आवश्यकता है। ए> भी।
तो, उचित कोड होगा, मुझे विश्वास है

if(isset($_GET['q'])){
  $_GET['q'] = trim($_GET['q']);
  if(strlen($_GET['q']) >= 2){
    $q = $_GET['q'];
    $q = '%'.addCslashes($q, '\%_').'%';
    // now we have the value ready either for escaping or binding
    $q = mysql_real_escape_string($q);
    $sql = "SELECT name, age, address FROM book WHERE name LIKE '$q'";
    //or 
    $sql = "SELECT name, age, address FROM book WHERE name LIKE ?";
    $stm = $pdo->prepare($sql);
    $stm->execute(array($q));
    $data = $stm->fetchAll();
  }
}

आउटपुट के लिए, उपयोग करें

echo htmlspecialchars($_GET['q']);

यहां स्ट्रिपस्लैश की जरूरत नहीं है।

यदि आप उनका उपयोग नहीं करेंगे तो मैजिक कोट्स आपकी सुरक्षा को नुकसान नहीं पहुंचाएंगे। अगर mysql(i)_set_charset या डीएसएन (पीडीओ के मामले में) का उपयोग इस उद्देश्य के लिए किया गया था - आप फिर से सुरक्षित हैं।

पीडीओ के लिए, एक टैग विकी स्टार्टर के लिए पर्याप्त होना चाहिए, मेरा मानना ​​है




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया के साथ php में pdo का उपयोग करना

  2. क्रॉन जॉब का उपयोग करके दैनिक डेटाबेस बैकअप

  3. java.sql.SQLException:उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)

  4. हाइबरनेट देशी SQL क्वेरी त्रुटि

  5. सेमीसिंक्रोनस प्रतिकृति सेटअप में एक दुर्घटनाग्रस्त MySQL मास्टर सर्वर को फिर से गुलाम बनाना