404 Not Found! قیمت ها به ۴۰۳ برگشت! به مدت محدود!
بزن بریم!سلام دوستان من یک سوالی دارم چطوری میتونم از حملات 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
ده بار ویرایش کردم ولی لینک رو نگذاشت 😅
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟