MySQL sql انجيڪشن کي ڪيئن روڪي ٿو؟ SQL انجيڪشن اصول ۽ روڪٿام

هن MySQLsql انجيڪشن کي ڪيئن روڪيو؟ SQL انجيڪشن اصول ۽ روڪٿام

هن MySQL ۽ SQL انجيڪشن

جيڪڏهن توهان صارف طرفان داخل ڪيل ڊيٽا کي ويب پيج ذريعي وٺي ۽ ان ۾ داخل ڪريوMySQL ڊيٽابيس، پوءِ ٿي سگھي ٿو SQL انجيڪشن سيڪيورٽي مسئلا.

هي باب توهان کي متعارف ڪرايو ويندو ته SQL انجيڪشن کي ڪيئن روڪيو وڃي ۽ اسڪرپٽ استعمال ڪريو SQL ۾ انجيل ٿيل اکرن کي فلٽر ڪرڻ لاءِ.

نام نهاد SQL انجيڪشن آهي سرور کي دوکو ڏيڻ لاءِ بدسلوڪي SQL حڪمن تي عمل ڪرڻ لاءِ ويب فارم ۾ SQL ڪمانڊ داخل ڪري ڊومين جي نالي يا صفحي جي درخواست جي پڇا ڳاڇا اسٽرنگ کي داخل ڪرڻ يا داخل ڪرڻ لاءِ.

اسان کي ڪڏهن به صارف جي ان پٽ تي ڀروسو نه ڪرڻ گهرجي، اسان کي اهو سمجهڻ گهرجي ته صارف ان پٽ ڊيٽا غير محفوظ آهي، ۽ اسان سڀني کي صارف ان پٽ ڊيٽا کي فلٽر ڪرڻ جي ضرورت آهي.

ھيٺ ڏنل مثال ۾، داخل ٿيل يوزر نالو لازمي آھي اکرن، انگن ۽ انڊر اسڪور جو ميلاپ، ۽ يوزر نالو 8 کان 20 اکرن جي وچ ۾ ھجڻ گھرجي.

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{
   $result = mysqli_query($conn, "SELECT * FROM users 
                          WHERE username=$matches[0]");
}
 else 
{
   echo "username 输入异常";
}

اچو ته SQL جي صورتحال تي هڪ نظر رکون جيڪو ٿئي ٿو جڏهن ڪو خاص اکر فلٽر نه ڪيو ويو آهي:

// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

مٿي ڏنل انجيڪشن بيان ۾، اسان $name جي متغير کي فلٽر نه ڪيو آهي. SQL بيان جنهن جي اسان کي ضرورت ناهي، $name ۾ داخل ڪيو ويو آهي، جيڪو صارف جي ٽيبل ۾ سڀني ڊيٽا کي ختم ڪري ڇڏيندو.

mysqli_query() PHP ۾ ڪيترن ئي SQL بيانن تي عمل ڪرڻ جي اجازت ناهي، پر SQLite ۽ PostgreSQL هڪ ئي وقت ڪيترن ئي SQL بيانن تي عمل ڪري سگھن ٿا، تنهنڪري اسان کي انهن صارفين جي ڊيٽا جي سختي سان تصديق ڪرڻ جي ضرورت آهي.

SQL انجيڪشن کي روڪڻ لاء، اسان کي ھيٺين پوائنٽن تي ڌيان ڏيڻ جي ضرورت آھي:

  • 1. ڪڏهن به صارف جي ان پٽ تي ڀروسو نه ڪريو.استعمال ڪندڙ جي ان پٽ کي چيڪ ڪريو، توھان استعمال ڪري سگھوٿا ريگولر ايڪسپريشن، يا ڊگھائي کي محدود ڪريو؛ سنگل اقتباس تبديل ڪريو ۽ ڊبل "-" وغيره.
  • 2. ڪڏھن به متحرڪ اسمبلي sql استعمال نه ڪريو، توھان استعمال ڪري سگھوٿا parameterized sql يا سڌي طرح ڊيٽا جي پڇا ڳاڇا ۽ رسائي لاءِ محفوظ ڪيل طريقا استعمال ڪريو.
  • 3. ايڊمنسٽريٽر جي استحقاق سان ڊيٽابيس ڪنيڪشن ڪڏهن به استعمال نه ڪريو، هر ايپليڪيشن لاءِ محدود استحقاق سان الڳ ڊيٽابيس ڪنيڪشن استعمال ڪريو.
  • 4. ڳجهي معلومات کي سڌو سنئون، انڪريپٽ يا پاس ورڊ ۽ حساس معلومات کي هٽائڻ نه ڏيو.
  • 5. ايپليڪيشن جي استثنا جي معلومات کي ممڪن طور تي گهٽ اشارو ڏيڻ گهرجي، ۽ اهو بهتر آهي ته روايتي غلطي جي معلومات کي استعمال ڪرڻ لاء اصل غلطي جي معلومات کي لپڻ لاء.
  • 6. sql انجيڪشن جو پتو لڳائڻ جو طريقو عام طور تي معاون اختيار ڪري ٿوسافٽ ويئريا ويب سائيٽ پليٽ فارم کي ڳولڻ لاء، سافٽ ويئر عام طور تي استعمال ڪري ٿو sql انجيڪشن ڳولڻ وارو اوزار jsky، ويب سائيٽ پليٽ فارم وٽ Yisi ويب سائيٽ سيڪيورٽي پليٽ فارم ڳولڻ وارو اوزار آهي. MDCSOFT SCAN et al.MDCSOFT-IPS استعمال ڪندي مؤثر طور تي SQL انجيڪشن، XSS حملن، وغيره جي خلاف دفاع ڪري سگھي ٿو.

SQL انجڻ کي روڪيو

اسڪرپٽنگ ٻولين ۾ جيئن ته پرل ۽ پي ايڇ پي، توهان SQL انجيڪشن کي روڪڻ لاءِ صارف پاران داخل ڪيل ڊيٽا کي بچائي سگهو ٿا.

PHP لاءِ MySQL ايڪسٽينشن خاص ان پٽ اکرن کان بچڻ لاءِ mysqli_real_escape_string() فنڪشن مهيا ڪري ٿي.

if (get_magic_quotes_gpc()) 
{
  $name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

وانگر بيانن ۾ انجڻ

سوال ڪرڻ وقت، جيڪڏهن صارف "_" ۽ "%" سان قدر داخل ڪري ٿو، اهو ٿيندو: صارف اصل ۾ "abcd_" سوال ڪرڻ چاهي ٿو، پر سوال جي نتيجن ۾ "abcd_"، "abcde"، ۽ "abcdf" شامل آهن. "وغيره؛ مسئلو پڻ تڏهن ٿئي ٿو جڏهن صارف پڇڻ چاهي ٿو "30٪" (نوٽ: ٽيهه سيڪڙو).

PHP اسڪرپٽ ۾ اسان استعمال ڪري سگھون ٿا addcslashes() فنڪشن مٿين صورتحال کي سنڀالڻ لاءِ، جيئن هيٺ ڏنل مثال ۾:

$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");
// $sub == \%something\_
 mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

addcslashes() فنڪشن مخصوص ڪردار کان اڳ هڪ backslash شامل ڪري ٿو.

نحو فارميٽ:

addcslashes(string,characters)
نيمتفصيلات
جملوگھربل.چيڪ ڪرڻ لاءِ اسٽرنگ کي بيان ڪري ٿو.
ڪردارناختياري.addclashes().

اميد چن ويلانگ بلاگ ( https://www.chenweiliang.com/ ) شيئر ڪيو ”ڪيئن ٿو MySQL روڪي ٿو sql انجيڪشن؟ sql انجيڪشن اصول ۽ روڪٿام"، اهو توهان جي مدد ڪندو.

هن آرٽيڪل جي لنڪ کي حصيداري ڪرڻ لاء ڀليڪار:https://www.chenweiliang.com/cwl-500.html

تازن تازه ڪاريون حاصل ڪرڻ لاءِ Chen Weiliang جي بلاگ جي ٽيليگرام چينل تي ڀليڪار!

🔔 چينل جي ٽاپ ڊاريڪٽري ۾ قيمتي "ChatGPT مواد مارڪيٽنگ AI اوزار استعمال ڪرڻ جي گائيڊ" حاصل ڪرڻ وارا پھريون بڻجي وڃو! 🌟
📚 هي گائيڊ وڏي قيمت تي مشتمل آهي، 🌟 هي هڪ نادر موقعو آهي، ان کي نه وڃايو! ⏰⌛💨
پسند اچي ته شيئر ڪريو ۽ پسند ڪريو!
توهان جي حصيداري ۽ پسند اسان جي مسلسل حوصلا آهن!

 

发表 评论

توهان جو اي ميل پتو شايع نه ڪيو ويندو. 必填 项 已 用 * ليبل

مٿي ڏانهن ڇڪيو