Обработка комментариев перед занесением в базу:
$str = trim($str);
$str = stripslashes($str);
$str = htmlspecialchars($str);
Обработка данных при выводе в поток:
htmlspecialchars($str) - строковые данные (VARCHAR, TEXT и т.д.)
(int)$str - числовые данные (INT)
Обработка GET запроса (в случае если он числовой):
$id = $_GET['id']; $id = (int)$id; $id = stripslashes($id); $id = htmlspecialchars($id);
Еще я слежу за инпутами, ставлю ограничение на количество введенных символов (например при 20 символах сложновато будет составить SQL-инъекцию в такую длину). Целесообразно ли вообще это?
Помогите еще составить регулярки для обработки логина с паролем (можно ткнуть ссылкой с гугла, если лень расписывать):
- регулярка для логина (запрещено использовать одновременно латиницу и кириллицу и "опасные" недосимволы).
- регулярка для пароля (запрещено использовать кириллицу и "опасные" недосимволы).
Спустя 4 минуты, 58 секунд (10.01.2011 - 15:09) vasa_c написал(а):
Все ваши действия абсолютно бессмысленны в отрыве от контекста.
Первое условие для действенной защиты - понимать что происходит, что может произойти и как это контролировать. Вы не понимаете, поэтому первым делом разберитесь, зачем нужна каждая из этих функций.
Первое условие для действенной защиты - понимать что происходит, что может произойти и как это контролировать. Вы не понимаете, поэтому первым делом разберитесь, зачем нужна каждая из этих функций.
Спустя 1 минута (10.01.2011 - 15:10) hellmin написал(а):
Спустя 4 минуты, 46 секунд (10.01.2011 - 15:15) SarPHP написал(а):
vasa_c, вот конкретно вы - какими бы функциями воспользовались для обработки комментариев, регулярки к логинам и паролям (в целом у всех сайтов почти всегда одна и та же защита); может у вас есть заготовочки, шаблончики? скиньте, а я сам доразберусь а так я в курсе что каждая функция делает и с чем ее едят, мне вот нужно еще добавочки
hellmin, принято упустил из виду эту функцию
hellmin, принято упустил из виду эту функцию
Спустя 3 минуты, 1 секунда (10.01.2011 - 15:18) Игорь_Vasinsky написал(а):
Цитата |
Какими еще функциями можно/нужно обрабатывать данные перед их внесением в базу и во время вывода ее в поток? Пока что я ограничиваюсь этим, но чувствую слабенькая защита: |
- во первых - как сказано в предидущем сообщении.
+ можешь ограничить кол-во символов
+ ты уж сам реши - какие символы использовать, для этого - регулярки в помощь.
Спустя 56 секунд (10.01.2011 - 15:19) vasa_c написал(а):
Перед вставкой в базу, данные следует привести к формату пригодному для вставки (или воспользоваться библиотекой, которая сама приводит). При использовании php_mysql, это mysql_real_escape_string().
При выводе в HTML, следует привести к HTML-виду - htmlspecialchars().
Всё остальное только в зависимости от условий конкретной задачи.
Обращаю внимание, что это не защита от инъекций, а приведение к нужному для вставки формату. Защита от инъекций это приятное побочное являение.
При выводе в HTML, следует привести к HTML-виду - htmlspecialchars().
Всё остальное только в зависимости от условий конкретной задачи.
Обращаю внимание, что это не защита от инъекций, а приведение к нужному для вставки формату. Защита от инъекций это приятное побочное являение.
Спустя 5 минут (10.01.2011 - 15:24) SarPHP написал(а):
Хорошо. Вот я привел к нужной форме данные для вставки. Вставляю ее. Потом правильно вывожу. Что дальше? Как защитить сайт от инъекций. У меня самые обычные, классические требования к защите.
Цитата |
+ ты уж сам реши - какие символы использовать, для этого - регулярки в помощь. |
Ну я написал какие символы использовать (в случае с логином и паролем); ну есть же стандарты обработки для логина и пароля, например, как делают это punbb и vbulletin
Спустя 1 час, 39 секунд (10.01.2011 - 16:25) Invis1ble написал(а):
SarPHP
Читай здесь
Читай здесь
Спустя 1 час, 15 минут, 47 секунд (10.01.2011 - 17:40) alex12060 написал(а):
Паранойа)
На самом деле, чтобы не париться, я имею при себе 2 функции)
Но 1 функция хоть и не пропустит ничего, но она:
- Тяжелая
- Экранирует кавычки (John\\\\\\\\\'s book)
Вторая простая) На регулярке) Можно просто использовать)
Как бы так)
На самом деле, чтобы не париться, я имею при себе 2 функции)
function protect($string) {
$string = mysql_real_escape_string($string);
$string = strip_tags($string);
$string = addslashes($string);
$string = htmlspecialchars($string);
$string = trim($string);
return $string;
}
/* И еще */
function is_num($num)
{
if (empty($num)) { return false; }
if (!preg_match ("/[0-9]/i", $num)) { return false; }
return true;
}
Но 1 функция хоть и не пропустит ничего, но она:
- Тяжелая
- Экранирует кавычки (John\\\\\\\\\'s book)
Вторая простая) На регулярке) Можно просто использовать)
Как бы так)
Спустя 7 минут, 55 секунд (10.01.2011 - 17:48) Invis1ble написал(а):
alex12060
Ты читал тот топик? Там все по полочкам разложено. А паранойа - это твои функции =)
Достаточно двух штатных функций - mysql_real_escape_string() для защиты от SQL-inj и htmlspecialchars() от XSS-атак.
Ты читал тот топик? Там все по полочкам разложено. А паранойа - это твои функции =)
Достаточно двух штатных функций - mysql_real_escape_string() для защиты от SQL-inj и htmlspecialchars() от XSS-атак.
Спустя 4 часа, 56 минут, 33 секунды (10.01.2011 - 22:45) SarPHP написал(а):
Ребят. Вы определитесь у кого из вас паранойя, пока у меня она не началась!
Invisible, не думаю, что однозначно можно утверждать, что две эти функции позволяют обеспечить стопроцентную защиту от SQL-инъекций и XSS-атак. Но в целом, они обеспечивают какую-никакую защиту, ну, наверно, на 99.9% случаев.
А функция stripslashes не помешает? Я ее тоже использую
А что там с регулярками для логина и пароля? Мне тоже подойдет штатный вариант) Ссылку можно или примерчик?
Invisible, не думаю, что однозначно можно утверждать, что две эти функции позволяют обеспечить стопроцентную защиту от SQL-инъекций и XSS-атак. Но в целом, они обеспечивают какую-никакую защиту, ну, наверно, на 99.9% случаев.
А функция stripslashes не помешает? Я ее тоже использую
А что там с регулярками для логина и пароля? Мне тоже подойдет штатный вариант) Ссылку можно или примерчик?
Спустя 19 минут, 49 секунд (10.01.2011 - 23:05) Invis1ble написал(а):
SarPHP
stripslashes() юзают для запросов в связке с mysql_real_escape_string(), если магические кавычки включены.
А зачем тебе регулярки для логина и пароля?
stripslashes() юзают для запросов в связке с mysql_real_escape_string(), если магические кавычки включены.
А зачем тебе регулярки для логина и пароля?
Спустя 7 минут, 37 секунд (10.01.2011 - 23:12) SarPHP написал(а):
Invis1ble, у меня на сайте при регистрации (по умолчанию) можно в логине и пароле одновременно использовать как латиницу, так и кириллицу..
То есть, зарегистрируется человек с никами "молоко" и "мoлoкo", где во втором случае буква "о" из латинского алфавита. По сути два разных ника получаются, а на визуальном уровне один. Некоторые шибко умные пользователи на этом могут позабавиться
То есть, зарегистрируется человек с никами "молоко" и "мoлoкo", где во втором случае буква "о" из латинского алфавита. По сути два разных ника получаются, а на визуальном уровне один. Некоторые шибко умные пользователи на этом могут позабавиться
Цитата |
stripslashes() юзают для запросов в связке с mysql_real_escape_string(), если магические кавычки включены. |
ну они же по умолчанию включены.. поэтому и использую для обработки абсолютно всех данных..
Спустя 48 секунд (10.01.2011 - 23:13) Dron19 написал(а):
Цитата (alex12060 @ 10.01.2011 - 14:40) |
Паранойа) На самом деле, чтобы не париться, я имею при себе 2 функции)
Но 1 функция хоть и не пропустит ничего, но она: - Тяжелая - Экранирует кавычки (John\\\\\\\\\'s book) Вторая простая) На регулярке) Можно просто использовать) Как бы так) |
Сразу понятно что ты эти функции только что выдумал =), потому что писал со спешкой и теперь эта функция вернет тру только если во входящем аргументе только одна цифра, ты плюсик забыл =)
Спустя 18 часов, 24 секунды (11.01.2011 - 17:13) SarPHP написал(а):
Помогите с регулярками к логину и паролю. Теме ап
В инете искал, что-то ничего нормального нет, может кто ссылку даст с нормальной литературой, как правильно составлять их.
В инете искал, что-то ничего нормального нет, может кто ссылку даст с нормальной литературой, как правильно составлять их.
Спустя 15 минут, 41 секунда (11.01.2011 - 17:29) Invis1ble написал(а):
SarPHP
Видимо плохо искал. Вот здесь почитай.
Видимо плохо искал. Вот здесь почитай.
Спустя 5 минут, 43 секунды (11.01.2011 - 17:35) hellmin написал(а):
Когда я что-то подобное делал то писал регулярку так
что означает использовать цифры + буквы латинского алфавита + знак подчеркивания, чтобы их было не менее пяти и не более 10... i - модификатор регистро-независимое сравнение. Такая проверка подойдет и для проверки логина. Если надо русские буквы то так
preg_match('/[0-9a-z_]{5,10}/i', $pass)
что означает использовать цифры + буквы латинского алфавита + знак подчеркивания, чтобы их было не менее пяти и не более 10... i - модификатор регистро-независимое сравнение. Такая проверка подойдет и для проверки логина. Если надо русские буквы то так
preg_match('/[0-9a-zа-я_]{5,10}/i', $pass)
Спустя 23 минуты, 25 секунд (11.01.2011 - 17:58) Basili4 написал(а):
alex12060
на говонокод.
вторую
туда же
Как надо
1. если выводишь в браузер htmlspecialchars($string);
если пишешь в базу mysql_real_escape_string($string);
2. (int)$num
если циферь то все будет ок если нет будет 0.
function protect($string) {
$string = mysql_real_escape_string($string);
$string = strip_tags($string);
$string = addslashes($string);
$string = htmlspecialchars($string);
$string = trim($string);
return $string;
}
на говонокод.
вторую
function is_num($num)
{
if (empty($num)) { return false; }
if (!preg_match ("/[0-9]/i", $num)) { return false; }
return true;
}
туда же
Как надо
1. если выводишь в браузер htmlspecialchars($string);
если пишешь в базу mysql_real_escape_string($string);
2. (int)$num
если циферь то все будет ок если нет будет 0.
Спустя 3 часа, 12 минут, 50 секунд (11.01.2011 - 21:11) DedMorozzz написал(а):
Проще выражение пропустить 2мя регулярками. Если та которая проверяет только латиницу - нашла что-то и та, которая кирилицу - выдаёшь уведомление. Можно сваять одну, но выйдет крокодил, который будет работать крайне долго
_____________
Вольный веб-дизайнер, идейщик с постоянным чувством информационного голода; когда знания ценнее денег - когда узнаешь новое и уважаешь в прошлое уходящее..