Pull to refresh

Comments 29

для защиты от SQL-инъекции надёжней и удобней использовать
parameterized statements/placeholders/bind variables
пример:
$sql = prepare_sql("SELECT user_id FROM users WHERE user_login = %s AND user_pass = %s", $user_login, $user_pass);

а в prepare_sql уже mysql_real_escape_string, intval и кавычки
у меня производительность после удобности
в смысле производительность важней, чем удобность
для защиты от sql инъекций юзай библиотеку mqsqli и будет тебе счастье
Расскажите, чем принципиально в этом плане php_mysqli (надеюсь вы её имели в виду) отличается от php_mysql.
И? Там какой-то другой query()? Или вы про подготовленные выражения? Но в PHP-задачах пример который привел Roxis куда удобнее.
... мое мнение:
клас для таблиц, где прописано типы переменных (полей). при вставке и выборке фильтровать в нужные форматы... может когда-то напишу статю..
вместо switch использовать in_array и/или isset
пример:

$includes = array('hello.php', 'bye.php');

if (isset($includes[$_GET['file']]))
include $includes[$_GET['file']];
Вообще мне кажется надо делать всё на процедурах, хотя я хз как в мускуле с этим делом всё обстоит, но под MS SQL Server реализуется.
ИМХО - Процедуры пожалуй самый лучший метод против SQL Injection.
А не подскажите статью где прочитать об этом методе?
Да в инете полно по этому поводу инфы, т.е сравнение что лучше тупо запросы либо выполнение через процедуры есть свои за и против. Простейший пример:
http://www.aspnetmania.com/Forums/ForumMessage/278187.html
А так посерфи инет там обезательно найдёш
Процедуры - это разнесение логики между PHP и СУБД, что нежелательно, т.к. повышает связность компонент проекта.
Это нежелательно, если такой подход будет применяться только для защиты от sql-инъекций. А вообще, вынесение логики в СУБД в множестве случаев очень оправдано, правда это случаи в большенстве своем связаны с повышенными требованиями к безопасности и надежности хранения данных.
по данной ссылке нет ни примера sql-инъекции, ни аргументации в пользу использования хранимых процедур, никаких "за и против".
Ссылка к данному топику не имеет никакого отношения
А "'" недостаточно????Там спрашивали как можно защитится от sql-injection. И если внимательно читали и хотя бы представляете что такое процедуры и с чем их едят, то думаю Вы поймёте о чём там речь.
опять же, смотря как в коде вызывается эта процедура. Если sqlstr = "CALL MyProcName tra-ta-ta, bla-bla-bla", то это не метод. Тут ессно лучше использовать препаредстейтмент вместе с процедурой. Хотя в случае MySQl использование хранимки на безопасности почти никак не сказывается (рабоаю с аспнет и родным провайдером MySqlData.dll).
Поясню автору, почему (скорее всего) минусуют тему. Дело в том, что все это уже все давно знают. Не знать про инъекции могут только чайники. Кроме того, это уже сто миллионов раз обсуждалось повсюду. Лучше конечно пользоваться поиском до публикации поста. Потому народ не считает тему полезной и минусует.
Простите, пользовался. Но к сожалению не нашел. В следющий раз буду пользоваться яндексом, т.к. на хабрапоиск не чувствителен к окончаниям.
А про чайников, я часто встречаю по работе такие ошибки, причем, вроде уже не чайники их делуют...
Еще раз прошу прощения, что не внимательно искал.
>Потому что злоумышленник может передать в переменную file "http://ya.ru/%00"(без ковычек) что отбросит расширение .php
Уязвимость с нулевым символом для PHP уже в прошлом.
Да, если хостинги обновляют php, но есть где стоит старый php и ничего с этим не поделаешь, а клиент уприрается и хочет именно на этом хостинге, потому что на нем дешевле/знакомые порекомендава/просто хочется.
Пишите в index.php:
include(addslashes($_GET['file']).".php");

Плохой дядя раз сто вызывает index.php?file=index.
addslashes нас спасет?
Для базового набора я бы добавил про Session Fixation и CSRF.
Объясните пожалуйста, а зачем Вы написали эту статью? Без иронии и сарказма, просто интересно.
Хотелось бы видеть побольше таких статей на сайте. Спасибо автору.
... есть такая прекрасная книга: М. Фленов - "РНР глазами хакера". как то дал друг на досуге почитать. основы очень хорошо приведены...
так же рекомендую (сам купил уже себе через е-магазин) М. Кузнецов, И. Симдянов "Головоломки на РНР для хакера". нужно сначала уметь взломать чтоб потом защитить... для етой цели есть даже спец. ПО для обнаружения уязвимостей в сайтах...
В общем, советы по защиет одни и те же, только теперь вам стоит немного потратиться на человека, который за деньги проверит ваш сайт на наличие уязвимостей и сообщит вам результаты.

Хочу предложить Вам в помощь сайт hackmysite.ru для проверки защиты вашего ресурса — по сути фриланс биржа для людей обладающих умением взлома. От вас требуется разместить проект, указать тип уязвимости и бюджет. Дальше просто — ждать предложения выполнить проект от экспертов взлома. Проект молодой и ждёт своих клиентов!
Sign up to leave a comment.

Articles