سلام دوستان من یک سوالی دارم چطوری میتونم از حملات SQL INJECTION در PHP جلوگیری کنم.
خودم اینو نوشتم نمیدونم امن هست یا نه؟
<?php
$database = array();
$database['HOSTNAME'] = "localhost";
$database['USERNAME'] = "root";
$database['PASSWORD'] = "root";
$database['DATABASE'] = "mimoc";
$connect = new mysqli($database['HOSTNAME'], $database['USERNAME'], $database['PASSWORD'], $database['DATABASE']);
if ($connect->connect_errno) {
echo "Failed connect to MYSQL: ( " . $connect->connect_errno . " ) " . $connect->connect_error;
}
$id = $_GET['id'];
$id_ok = filter_var($id, FILTER_SANITIZE_NUMBER_INT);
if (is_numeric($id_ok)) {
$query = $connect->query("SELECT * FROM users WHERE user_id={$id_ok}");
while ($row = mysqli_fetch_array($query)) {
echo "";
print_r($row);
echo "";
}
}
var_dump($query);
@alirezatahriri سلام .
من در حد دانش خودم راهنمایی میکنم اما قطعا دوستان باتجربه تر میتونن بهتر راهنمایی کنن .
تا اونجایی که من میدونم استفاده از PDO بجای روش های قدیمی تر مثل mysqli توصیه میشه . چه با mysqli چه PDO باید سعی بکنید از prepared query ها استفاده بکنید . در واقع با متد prepare کوئری رو آماده اجرا کنید :
Prepared Statements eliminate any possibility of SQL Injection in your web application. No matter what is passed into the $_GET variables here, the structure of the SQL query cannot be changed by an attacker (unless, of course, you have PDO::ATTR_EMULATE_PREPARES enabled, which means you're not truly using prepared statements).
البته برای اعتبار سنجی های احتمالی، روش فیلتر کردن و sanitize که خودتون هم بکار بردین میتونه تاثیر گذار باشه.
این هم همین مقاله ای که قسمتیش رو عنوان کردم : مقاله
موفق باشید 🌹
از کسی پرسیدم که اگر از PDO استفاده کنی هنگام خواندن اطلاعات از پایگاه داده هم میتونی از query استفاده کنی و هم prepare.
میخواستم ببینم که از هر دو میشه برای خواندن اطلاعات استفاده کرد
@alirezatahriri
سلام و وقت بخیر
برای فریمورک ها که بحثی نیست .
برای PHP خام هم توصیه میکنم اگر انگلیستون خوبه ، این لینک رو یه نگاهی بیندازید :
موفق و سلامت باشید
یا حق
https://phpsecurity.readthedocs.io/en/latest/Injection-Attacks.html#sql-injection
ده بار ویرایش کردم ولی لینک رو نگذاشت 😅
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟