0 دوستدار 0 امتیاز منفی
در برنامه نویسی توسط

با سلام می خواستم بدانم چگونه از  SQL injection جلوگیری کنم؟

1 پاسخ

0 دوستدار 0 امتیاز منفی
توسط (14.3k امتیاز)

اگر بخواهم به پرسش شما پاسخ دهم باید ابتدا آنرا کمی باز تر کنم

مقصود شما این است که اگر کوئری مانند ریز داشته باشیم:

~~$unsafe_variable = $_POST['user_input'];

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");

یوزر شما می تواند چیزی مانند این را

~~value'); DROP TABLE table;--,

به صورت ورودی در بانک اطلاعاتی شما اینچکت کند یا وارد کند بدون اینکه شما خواسته باشید

~~INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')

برای جلوگیری از چنین مشکلاتی باید برای بانک اطلاعاتی پشتیبان درایور بهتر است از PDO استفاده کنید مانند:

~~$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array('name' => $name));

foreach ($stmt as $row) {
    // do something with $row
}

و به جای mysql بهتر است از mysqli استفاده کنید:

~~$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

 

 

 

سوالات مشابه

0 دوستدار 0 امتیاز منفی
1 پاسخ
سوال شده آذر 16, 1395 در آشپزی توسط حاجی نجیب الله سبزواری
0 دوستدار 0 امتیاز منفی
1 پاسخ
سوال شده اسفند 12, 1394 توسط بی نام
0 دوستدار 0 امتیاز منفی
1 پاسخ
0 دوستدار 0 امتیاز منفی
1 پاسخ
...