MySQL sql انجیکشن کو کیسے روکتا ہے؟ ایس کیو ایل انجیکشن اصول اور روک تھام

MySQLایس کیو ایل انجیکشن کو کیسے روکا جائے؟ ایس کیو ایل انجیکشن اصول اور روک تھام

MySQL اور ایس کیو ایل انجیکشن

اگر آپ صارف کے ذریعے داخل کردہ ڈیٹا کو ویب پیج کے ذریعے لیتے ہیں اور اسے a میں داخل کرتے ہیں۔MySQL ڈیٹا بیس، پھر 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 输入异常";
}

آئیے ایس کیو ایل کی صورت حال پر ایک نظر ڈالتے ہیں جو اس وقت ہوتی ہے جب کوئی خاص حرف فلٹر نہیں کیا جاتا ہے۔

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

مندرجہ بالا انجیکشن سٹیٹمنٹ میں، ہم نے $name کے متغیر کو فلٹر نہیں کیا۔ SQL اسٹیٹمنٹ جس کی ہمیں ضرورت نہیں ہے وہ $name میں ڈالا جاتا ہے، جو صارفین کے ٹیبل میں موجود تمام ڈیٹا کو حذف کر دے گا۔

پی ایچ پی میں mysqli_query() کو متعدد ایس کیو ایل اسٹیٹمنٹس کو انجام دینے کی اجازت نہیں ہے، لیکن SQLite اور PostgreSQL ایک ہی وقت میں متعدد ایس کیو ایل اسٹیٹمنٹس کو انجام دے سکتے ہیں، اس لیے ہمیں ان صارفین کے ڈیٹا کی سختی سے تصدیق کرنے کی ضرورت ہے۔

ایس کیو ایل انجیکشن کو روکنے کے لیے ہمیں درج ذیل نکات پر توجہ دینے کی ضرورت ہے:

  • 1. صارف کے ان پٹ پر کبھی بھروسہ نہ کریں۔صارف کے ان پٹ کو چیک کریں، آپ ریگولر ایکسپریشنز استعمال کر سکتے ہیں، یا لمبائی کو محدود کر سکتے ہیں؛ سنگل اقتباسات کو تبدیل کریں اور "-" کو ڈبل کریں۔
  • 2. کبھی بھی ڈائنامک اسمبلی ایس کیو ایل کا استعمال نہ کریں، آپ پیرامیٹرائزڈ ایس کیو ایل استعمال کرسکتے ہیں یا ڈیٹا کے استفسار اور رسائی کے لیے براہ راست ذخیرہ شدہ طریقہ کار استعمال کرسکتے ہیں۔
  • 3. ایڈمنسٹریٹر کی مراعات کے ساتھ کبھی بھی ڈیٹا بیس کنکشن استعمال نہ کریں، ہر ایپلیکیشن کے لیے محدود مراعات کے ساتھ علیحدہ ڈیٹا بیس کنکشن استعمال کریں۔
  • 4. خفیہ معلومات کو براہ راست ذخیرہ نہ کریں، پاس ورڈز اور حساس معلومات کو خفیہ یا ہیش آؤٹ نہ کریں۔
  • 5. درخواست کی استثنیٰ کی معلومات کو ممکنہ حد تک کم اشارے دینے چاہئیں، اور اصل غلطی کی معلومات کو سمیٹنے کے لیے حسب ضرورت غلطی کی معلومات کا استعمال کرنا بہتر ہے۔
  • 6. ایس کیو ایل انجیکشن کا پتہ لگانے کا طریقہ عام طور پر معاون کو اپناتا ہے۔软件یا ویب سائٹ پلیٹ فارم کا پتہ لگانے کے لئے، سافٹ ویئر عام طور پر sql انجکشن کا پتہ لگانے کے آلے jsky کا استعمال کرتا ہے، ویب سائٹ کے پلیٹ فارم میں Yisi ویب سائٹ سیکورٹی پلیٹ فارم کا پتہ لگانے کا آلہ ہے. MDCSOFT SCAN وغیرہ۔MDCSOFT-IPS کا استعمال SQL انجیکشن، XSS حملوں وغیرہ کے خلاف مؤثر طریقے سے دفاع کر سکتا ہے۔

ایس کیو ایل انجیکشن کو روکیں۔

اسکرپٹنگ زبانوں جیسے پرل اور پی ایچ پی میں آپ ایس کیو ایل انجیکشن کو روکنے کے لیے صارف کے داخل کردہ ڈیٹا سے بچ سکتے ہیں۔

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%" (نوٹ: تیس فیصد) سے استفسار کرنا چاہتا ہے۔

پی ایچ پی اسکرپٹ میں ہم مندرجہ بالا صورت حال کو سنبھالنے کے لیے 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 انجیکشن اصول اور روک تھام"، یہ آپ کی مدد کرے گا۔

اس مضمون کا لنک شیئر کرنے میں خوش آمدید:https://www.chenweiliang.com/cwl-500.html

تازہ ترین اپ ڈیٹس حاصل کرنے کے لیے چن ویلیانگ کے بلاگ کے ٹیلیگرام چینل میں خوش آمدید!

🔔 چینل ٹاپ ڈائرکٹری میں قیمتی "ChatGPT Content Marketing AI Tool Usage Guide" حاصل کرنے والے پہلے فرد بنیں! 🌟
📚 یہ گائیڈ بہت بڑی قیمت پر مشتمل ہے، 🌟یہ ایک نادر موقع ہے، اس سے محروم نہ ہوں! ⏰⌛💨
پسند آئے تو شیئر اور لائک کریں!
آپ کا اشتراک اور پسندیدگی ہماری مسلسل حوصلہ افزائی ہے!

 

评论 评论

آپ کا ای میل ایڈریس شائع نہیں کیا جائے گا۔ ضروری شعبوں کا استعمال کیا جاتا ہے * لیبل لگائیں

اوپر سکرول کریں