Нашёл такой вот пост на каком-то Форуме:
И на закусочку: метод взлома и порчи сайтов, проводимый за счёт отсутствия кавычек в SQL - строках или отсутствия эскейпов называется SQL-инъекцией
Хочу узнать что такое эскейпов?
И справедливо думать что если кавычки есть то и SQL-инъекцией воспользоваться не как?
Вообще как спастись от этого зла?
1. LifePlay - 01 Декабря, 2010 - 20:39:42 - перейти к сообщению
2. ALEN - 01 Декабря, 2010 - 20:46:21 - перейти к сообщению
проверкой данных
3. LifePlay - 01 Декабря, 2010 - 21:22:41 - перейти к сообщению
Кавычки не при делах?
4. ALEN - 01 Декабря, 2010 - 21:55:48 - перейти к сообщению
LifePlay
не при делах, при делах обработка данных когда их вставляете в запрос
не при делах, при делах обработка данных когда их вставляете в запрос
5. Телевизор - 01 Декабря, 2010 - 22:15:19 - перейти к сообщению
а если только выборка идет без методов post, то и тогда sql запросы бесполезны ? всмысле взламывать нечего если только выборка страниц?
6. ALEN - 01 Декабря, 2010 - 22:19:44 - перейти к сообщению
Телевизор
старайся в любый запросах данные форматировать, экранировать избавляться в них от частей который могут изменить запрос к БД
старайся в любый запросах данные форматировать, экранировать избавляться в них от частей который могут изменить запрос к БД
7. Телевизор - 01 Декабря, 2010 - 22:53:39 - перейти к сообщению
ALEN ааааааааааааа.... теперь понятниньки спс
хм.. а как думаешь mysql_escape_string() достаточно для экринирования символов ?
хм.. а как думаешь mysql_escape_string() достаточно для экринирования символов ?
8. OrmaJever - 01 Декабря, 2010 - 23:41:24 - перейти к сообщению
Телевизор пишет:
хм.. а как думаешь mysql_escape_string() достаточно для экринирования символов ?
Да. Эту функцию можно применять не ко всем переменым, а только к тем которые может задать пользователь. Тоесть масивы ($_REQUEST, $_POST, $_GET, $_COOKIE) и другие переменые значения которых пользователь может изменить.
mysql_escape_string() - использовать когда заносишь пользовательские даные в бд
и
htmlspecialchars() - когда выводишь даные пользовательские на страницу.
И про sql иньекцию и xss атаки можно забыть.
9. DeepVarvar - 02 Декабря, 2010 - 00:23:59 - перейти к сообщению
OrmaJever
Ну например getenv('REMOTE_ADDR'); и getenv('HTTP_X_FORWARDED_FOR'); тоже подделать можно... Они часто в счетчиках и "кто оньлань" на БД используются... Так это ж строки...
Хотя именно эти я проверяю регуляркой "#(^[0-9.:]{7,15}$)#" - на всякий случай... Обычная софтина исправно отправит верные заголовки и мы её запишем, а кулхацкеру шиш с маслом...
Ну например getenv('REMOTE_ADDR'); и getenv('HTTP_X_FORWARDED_FOR'); тоже подделать можно... Они часто в счетчиках и "кто оньлань" на БД используются... Так это ж строки...
Хотя именно эти я проверяю регуляркой "#(^[0-9.:]{7,15}$)#" - на всякий случай... Обычная софтина исправно отправит верные заголовки и мы её запишем, а кулхацкеру шиш с маслом...
10. Телевизор - 02 Декабря, 2010 - 08:26:37 - перейти к сообщению
OrmaJever
ессссссссс как раз таки и гет и использую.
DeepVarvar кстати тоже как вариант с регулярными выражениями тоже попробую,
вообще я шизик, 10 раз пытаюсь себя обезопасить даже в простых случаях...
ессссссссс как раз таки и гет и использую.
DeepVarvar кстати тоже как вариант с регулярными выражениями тоже попробую,
вообще я шизик, 10 раз пытаюсь себя обезопасить даже в простых случаях...
11. OrmaJever - 02 Декабря, 2010 - 12:43:41 - перейти к сообщению
DeepVarvar я же не мог вспомнить все переменые, я написал всё что пользователь может изменить.
Телевизор телевизор безопасность это важно но не нужно даные пропускатьчерез 10 проверок и 5 функций. Достаточноодной грамоточно проверки.
Вот например я делал голосование, и там было 4 варианта ответа которые принимались методом гет и добавлялисьв базу.
Я написал вот так
Телевизор телевизор безопасность это важно но не нужно даные пропускатьчерез 10 проверок и 5 функций. Достаточноодной грамоточно проверки.
Вот например я делал голосование, и там было 4 варианта ответа которые принимались методом гет и добавлялисьв базу.
Я написал вот так
вот примерно таким способом можно не использовать функцию mysql_escape_string()
Ну то единичные случаи но всётаки можно фильтровать так или регулярными выражениями.