Советы по Mysql

Печать / RSS
0
1. ____________________ 08.03.2014 / 23:52
Пришелец
Не раз встречал посты с ругательствами на SQL иньекции. Что это такое, как предотвратить это и напишите разные советы по обеспечению безопасности с Mysql.
0
2. Алексей 09.03.2014 / 04:10
Пришелец
Изначально фильтрировать все входящие данные перед записью в бд, mysql_real_escape_string() и htmlspecialchars() будет достаточно)
0
3. Артур 09.03.2014 / 05:19
Мы ждем перемен!
B коде можете указать, как выглядет до и после?
0
4. YouMobe 09.03.2014 / 11:57
Землянин
Попробую описать как я понимаю как обезопасить себя от 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'
Тут могут вытекать разные последствия
Изменил: YouMobe (09.03.2014 / 11:59)
0
5. Абдула 09.03.2014 / 13:17
Чатланин
Не знаю как другие, но я так делаю. Например поля логин и пароль. Ограничиваю длину логина например на 12-13 символах, ну и пароль 8-12 символов. И при приеме данных просто проверяю длину строки, если длина строки больше, то посылаю по дальше. Ну и попробуйте теперь написать sql запрос с длиной не более 12 символов. ))
0
6. ____________________ 09.03.2014 / 15:05
Пришелец
5. Аварский, а если нужно больше символов? Например сбщ в лс?
0
7. YouMobe 09.03.2014 / 16:34
Землянин
Avrong (9 Марта 2014 / 15:05)
5. Аварский, а если нужно больше символов? Например сбщ в лс?

Аварцы общаются коротко.D.gif
0
8. shilo 10.03.2014 / 12:47
Чатланин
5. Аварский, > пароль 8-12 символов
не, ну это ппц
0
9. YouMobe 10.03.2014 / 16:03
Землянин
shilo (10 Марта 2014 / 12:47)
5. Аварский, > пароль 8-12 символов
не, ну это ппц

Для подбора облегчил
0
10. Алексей 10.03.2014 / 16:24
Землянин
mysql_escape_string(htmlspecialchars(stripslashes($ololo)))
вот и все проблемы
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск