Telegram Group & Telegram Channel
Как защититься от SQL-инъекций без prepared statements?

🔐 Альтернативные способы защиты от SQL-инъекций без prepared statements

1. Экранирование пользовательского ввода
Для MySQL можно использовать функцию mysqli_real_escape_string(), которая экранирует специальные символы в строке, делая её безопасной для использования в SQL-запросах.​

$login = mysqli_real_escape_string($conn, $_POST['login']);$query = «SELECT * FROM users WHERE login = '$login'»;


Однако этот метод не защищает от всех видов атак и может быть недостаточно эффективным, особенно если не учитывать кодировку и типы данных.​

2. Приведение типов и валидация данных
Если ожидается, что пользовательский ввод должен быть определённого типа (например, целое число), следует явно приводить его к этому типу и проверять допустимость значения.​


$id = (int)$_GET['id'];$query = «SELECT * FROM products WHERE id = $id»;



Это предотвращает внедрение вредоносного кода через параметры, ожидающие числовые значения.​

3. Белые списки допустимых значений
Для параметров, которые могут принимать ограниченный набор значений (например, порядок сортировки), следует использовать белые списки и проверять, что введённое значение входит в допустимый набор.​



$order = $_GET['order'];if (!in_array($order, ['ASC', 'DESC'])) {$order = 'ASC';}$query = «SELECT * FROM products ORDER BY price $order»;



Это предотвращает возможность внедрения произвольного SQL-кода через параметры.​
4. Использование хранимых процедур

Хранимые процедуры, определённые на стороне базы данных, могут помочь изолировать SQL-логику от пользовательского ввода. Однако они также могут быть уязвимы, если параметры не обрабатываются должным образом.​

⚠️ Почему эти методы менее надёжны

🔸 Экранирование и валидация требуют тщательной реализации и могут быть легко нарушены при изменении кода.​

🔸 Ошибки в логике проверки или упущенные случаи могут открыть путь для атак.​

🔸 Эти методы не обеспечивают такой же уровень защиты, как подготовленные выражения, особенно при работе с различными типами данных и кодировками.



tg-me.com/php_interview_lib/765
Create:
Last Update:

Как защититься от SQL-инъекций без prepared statements?

🔐 Альтернативные способы защиты от SQL-инъекций без prepared statements

1. Экранирование пользовательского ввода
Для MySQL можно использовать функцию mysqli_real_escape_string(), которая экранирует специальные символы в строке, делая её безопасной для использования в SQL-запросах.​

$login = mysqli_real_escape_string($conn, $_POST['login']);$query = «SELECT * FROM users WHERE login = '$login'»;


Однако этот метод не защищает от всех видов атак и может быть недостаточно эффективным, особенно если не учитывать кодировку и типы данных.​

2. Приведение типов и валидация данных
Если ожидается, что пользовательский ввод должен быть определённого типа (например, целое число), следует явно приводить его к этому типу и проверять допустимость значения.​


$id = (int)$_GET['id'];$query = «SELECT * FROM products WHERE id = $id»;



Это предотвращает внедрение вредоносного кода через параметры, ожидающие числовые значения.​

3. Белые списки допустимых значений
Для параметров, которые могут принимать ограниченный набор значений (например, порядок сортировки), следует использовать белые списки и проверять, что введённое значение входит в допустимый набор.​



$order = $_GET['order'];if (!in_array($order, ['ASC', 'DESC'])) {$order = 'ASC';}$query = «SELECT * FROM products ORDER BY price $order»;



Это предотвращает возможность внедрения произвольного SQL-кода через параметры.​
4. Использование хранимых процедур

Хранимые процедуры, определённые на стороне базы данных, могут помочь изолировать SQL-логику от пользовательского ввода. Однако они также могут быть уязвимы, если параметры не обрабатываются должным образом.​

⚠️ Почему эти методы менее надёжны

🔸 Экранирование и валидация требуют тщательной реализации и могут быть легко нарушены при изменении кода.​

🔸 Ошибки в логике проверки или упущенные случаи могут открыть путь для атак.​

🔸 Эти методы не обеспечивают такой же уровень защиты, как подготовленные выражения, особенно при работе с различными типами данных и кодировками.

BY Библиотека собеса по PHP | вопросы с собеседований


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/php_interview_lib/765

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

NEWS: Telegram supports Facetime video calls NOW!

Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.

Telegram has exploded as a hub for cybercriminals looking to buy, sell and share stolen data and hacking tools, new research shows, as the messaging app emerges as an alternative to the dark web.An investigation by cyber intelligence group Cyberint, together with the Financial Times, found a ballooning network of hackers sharing data leaks on the popular messaging platform, sometimes in channels with tens of thousands of subscribers, lured by its ease of use and light-touch moderation.telegram from sg


Telegram Библиотека собеса по PHP | вопросы с собеседований
FROM USA