MySQL څنګه د sql انجیکشن مخه نیسي؟ د SQL انجیکشن اصول او مخنیوی

مایڅنګه د sql انجیکشن مخه ونیسئ؟ د SQL انجیکشن اصول او مخنیوی

مای او SQL انجیکشن

که تاسو د ویب پاڼې له لارې د کارونکي لخوا داخل شوي معلومات واخلئ او په a کې یې داخل کړئد MySQL ډیټابیس، بیا ممکن د 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}'");

په پورتني انجیکشن بیان کې ، موږ د $ نوم متغیر فلټر نه کړ ، او د SQL بیان چې موږ ورته اړتیا نلرو په $ نوم کې دننه کیږي ، کوم چې به د کاروونکو میز کې ټول معلومات حذف کړي.

په پی ایچ پی کې mysqli_query() ته اجازه نه ورکول کیږي چې ډیری SQL بیانونه اجرا کړي، مګر په SQLite او PostgreSQL کې، ډیری SQL بیانونه په ورته وخت کې اجرا کیدی شي، نو موږ اړتیا لرو چې د دې کاروونکو ډاټا په کلکه تایید کړو.

د SQL انجیکشن مخنیوي لپاره ، موږ باید لاندې ټکو ته پاملرنه وکړو:

  • 1. هېڅکله د کاروونکي په داخل کې باور مه کوئ.د کارونکي ان پټ چیک کړئ، تاسو کولی شئ منظم بیانونه وکاروئ، یا اوږدوالی محدود کړئ؛ واحد نرخونه بدل کړئ او دوه ځله "-" او داسې نور.
  • 2. هیڅکله متحرک اسمبلۍ sql مه کاروئ، تاسو کولی شئ د پیرامیټریز شوي 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() فنکشن د ټاکل شوي کرکټر څخه مخکې بیک سلیش اضافه کوي.

د نحو بڼه:

addcslashes(string,characters)
پیرامیټر描述
تاراړین دی.د چک کولو لپاره تار مشخص کوي.
د تورواختیاري.د addcslashes().

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) شریک شوی "مای ایس کیو ایل څنګه د sql انجیکشن مخه نیسي؟ د sql انجیکشن اصول او مخنیوی"، دا به ستاسو سره مرسته وکړي.

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-500.html

د وروستي تازه معلوماتو ترلاسه کولو لپاره د چن ویلیانګ بلاګ ټیلیګرام چینل ته ښه راغلاست!

🔔 د چینل غوره لارښود کې د ارزښتناکه "ChatGPT مینځپانګې بازار موندنې AI وسیلې کارولو لارښود" ترلاسه کولو لپاره لومړی اوسئ! 🌟
📚 دا لارښود لوی ارزښت لري، 🌟دا یو نادر فرصت دی، له لاسه مه ورکوئ! ⏰⌛💨
که مو خوښه شوه لایک او شریک کړئ!
ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو د بریښنالیک آدرس به نشر نشي اړین ساحې کارول کیږي * لیبل

پورته ته سکرول