Попробую описать как я понимаю как обезопасить себя от SQL injection
Понятно что если злоумышленник сможет выполнить SQL команды на сервере, ему достаточно будет узнать имя таблицы к примеру:
DELETE
FROM имя_таблицы;
Допустим, что у вас есть таблица пользователей Users, состоящий из трех полей: 'id', 'name', 'password' Запрос на выборку данных может выглядеть так:
SELECT *
FROM Users
WHERE id = $_GET[id]
В данном запросе поле 'id' сравнивается со значением переменной.
Если эта переменная получена как параметр сценария через URL или Cookie, и нет никаких проверок на запрещенные символы, то запрос уязвимый.
Можно модифицировать запрос
SELECT *
FROM Users
WHERE id = 10 OR name 'Администратор'
Чтобы этого не произошло, в таком случаю нужно точно представлять какие данные хранятся в таблице, и позволят передавать в качестве параметра те данные, которые разрешены. Например поле 'id' - это числовое поле, а значит в переменной кроме цифр 0-9 ничего не должно передаваться.
вот к примеру создай файл
<form action="" method="GET">
<input name="id">
</form>
<?php
$id = (int)$_GET['id'];
print('SELECT * FROM Users WHERE id='.$id)
?>
Таким же способом можно и строку обработать, а можно и через регулярные выражения сделать.
у PHP есть ряд функции
- Экранирование mysql_real_escape_string
Через SQL запросы можно получить доступ к файловой системе
Например, такой код который сохраняет в PHP файле сценарий:
SELECT '<?php system('параметр') ?>' INTO OUTFILE 'shell.php'
Тут могут вытекать разные последствия