blacknightwolf
@blacknightwolf

Безопасны ли такие SQL-запросы?

1. Опасно ли писать такие SQL-запросы? Если да, то хотелось бы узнать уязвимости построения таких запросов. Про подготовленные выражения знаю, но пока плохо понимаю.
$name = strip_tags(htmlspecialchars(addslashes(($_POST['name']))))
$escape = mysqli_real_escape_string($connection, $name);
$sql = "INSERT INTO `users` (`name`) VALUES ('$escape')";
$sqlquery = mysqli_query($connection, $sql);

P.S для дополнительной безопасности можем удалять фразы с помощью preg_replace: |DROP|, |DELETE|, |SELECT|, |UPDATE|, |INSERT|, |UNION|.

2. Безопасен ли такой GET-параметр? Возможна ли в данном случае SQL-инъекция? Если да, то как?
if (isset($_GET['id'])) {
    $id = (int)$_GET['id']; // тут еще можно использовать mysqli_real_escape_string или htmlspecialchars, но не вижу смысла, так как это (int).
}
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Пригласить эксперта
Ответы на вопрос 2
ivankomolin
@ivankomolin
1. Да, опасно. В вашем случае заэкранируются кавычки и что-то вроде такого \x00, \n, \r, \. А вот "; drop table ***" позволит написать с легкостью)
2. В таком виде безопасен. Но завтра кто-нибудь уберет (int) без задней мысли и он снова опасен.

Чем быстрее вы разберетесь с PDO и плейсхолдерами, тем быстрее начнете писать качественный код. Не стоит лениться для изучения основ. В будущем это очень поможет.
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Крошка сын
--------к отцу пришел,
--------и сказала кроха:
------------PDO - хорошо
------------mysqli это плохо
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы