Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SQL инъекция и методы борьбы
Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » SQL инъекция и методы борьбы

Страниц (1): [1]
 

1. Айратиус - 27 Апреля, 2014 - 22:34:40 - перейти к сообщению
Всем доброго времени суток. Вечер был на ура, но он сразу же испортился как мой знакомый, который не имеет никакого доступа к моим сайтам вдруг сказал логин от моей базы одного из сайтов. И тут мое сердце остановилось. Потом поделился замечательной прогой SQLmap, я конечно быстро за комп и в гугл. В итоге я конечно не смог увидеть свой логин пароль, но список баз данных через прогу увидел.

Сам я не считаю себя программистом, но даже я со своими минимальными знаниями смог провернуть эту операцию, а что сможет сделать крутой программист?
В итоге, как защититься от всего этого?

вот то, что я ввел в SQLmap
CODE (htmlphp):
скопировать код в буфер обмена
  1. python sqlmap.py -u http://site.kz/index.php?id=17 --dbs
2. OrmaJever - 27 Апреля, 2014 - 23:35:34 - перейти к сообщению
Айратиус пишет:
В итоге, как защититься от всего этого?

Доверить написание скриптов более серьёзным людям. Если в гугле написать "защита от sql иньекций в php" я уверен будет миллионы ссылок, эта тема уже так вытоптана что даже добавить нечего.
3. esterio - 28 Апреля, 2014 - 12:03:13 - перейти к сообщению
OrmaJever
вытоптана то она вытоптана. только в каком направлении
например вот здесь
http://malinichev[dot]ru/articles/sql-injection[dot]html
PHP:
скопировать код в буфер обмена
  1. $id = $_GET['id']; // Заносим значения GET параметра id в переменную
  2. $id = $db->real_escape_string($id); // Обрабатываем на спец. символы
  3. $id = intval($_GET['id']); // Выбираем только целое число
  4. $query = $db->query("SELECT * FROM `news` WHERE `id` = '".$id."'"); // Выбираем новость по полученным параметрам
  5.  

Так что нужно еще найти достойную статейку

Внимание для новичков: это плохой код
4. Айратиус - 28 Апреля, 2014 - 17:38:27 - перейти к сообщению
В общем вот что сделал сам. В самом начале когда для определенного сайта проделывал следующее
CODE (htmlphp):
скопировать код в буфер обмена
  1. python sqlmap.py -u http://site.kz/index.php?id=17 --dbs

я мог видеть базы данных и соответственно что в них храниться.
было

PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['id'])){$id=$_GET['id']}


потом переделал следующим образом

PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['id'])){
  2. if(preg_match("|^[\d]+$|", $_GET['id'])){
  3. $id= $_GET['id'];
  4. }}
то есть проверил является ли id числом. и только после этого я перестал видеть список баз даных и их содержимое
5. teddy - 28 Апреля, 2014 - 18:43:21 - перейти к сообщению
Айратиус пишет:
потом переделал следующим образом

и зачем тут preg_match?
приводите сразу к числу а все остальное отбрасывайте. Используйте для приведения к числу либо функцию intval либо (int) перед переменной.

А если надо проверить целое число ли это то будет достаточно функции ctype_digit
PHP:
скопировать код в буфер обмена
  1. if(!ctype_digit($_GET['id'])){
  2.     exit('Не число');
  3. }
6. Айратиус - 03 Мая, 2014 - 22:12:17 - перейти к сообщению
teddy пишет:
Айратиус пишет:
потом переделал следующим образом

и зачем тут preg_match?
приводите сразу к числу а все остальное отбрасывайте. Используйте для приведения к числу либо функцию intval либо (int) перед переменной.

А если надо проверить целое число ли это то будет достаточно функции ctype_digit
PHP:
скопировать код в буфер обмена
  1. if(!ctype_digit($_GET['id'])){
  2.     exit('Не число');
  3. }



Списибо, учту
7. OrmaJever - 03 Мая, 2014 - 22:20:38 - перейти к сообщению
teddy пишет:
А если надо проверить целое число ли это то будет достаточно функции ctype_digit

Грязный хак
PHP:
скопировать код в буфер обмена
  1. $d = '1232d';
  2. var_dump((string)(int)$d == $d);

Закатив глазки

 

Powered by ExBB FM 1.0 RC1