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 :: Версия для печати :: Как правильно
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как правильно

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

1. LifePlay - 01 Декабря, 2010 - 20:39:42 - перейти к сообщению
Нашёл такой вот пост на каком-то Форуме:

И на закусочку: метод взлома и порчи сайтов, проводимый за счёт отсутствия кавычек в SQL - строках или отсутствия эскейпов называется SQL-инъекцией

Хочу узнать что такое эскейпов?
И справедливо думать что если кавычки есть то и SQL-инъекцией воспользоваться не как?
Вообще как спастись от этого зла?
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() достаточно для экринирования символов ?
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}$)#" - на всякий случай... Обычная софтина исправно отправит верные заголовки и мы её запишем, а кулхацкеру шиш с маслом...
10. Телевизор - 02 Декабря, 2010 - 08:26:37 - перейти к сообщению
OrmaJever
ессссссссс как раз таки и гет и использую.
DeepVarvar кстати тоже как вариант с регулярными выражениями тоже попробую,
вообще я шизик, 10 раз пытаюсь себя обезопасить даже в простых случаях...
11. OrmaJever - 02 Декабря, 2010 - 12:43:41 - перейти к сообщению
DeepVarvar я же не мог вспомнить все переменые, я написал всё что пользователь может изменить.

Телевизор телевизор безопасность это важно но не нужно даные пропускатьчерез 10 проверок и 5 функций. Достаточноодной грамоточно проверки.
Вот например я делал голосование, и там было 4 варианта ответа которые принимались методом гет и добавлялисьв базу.
Я написал вот так

PHP:
скопировать код в буфер обмена
  1. $arr = array('1', '2', '3', '4');
  2. if(array_search($_GET['x'], $arr) === false)
  3. $x = 1;
  4. else $x = $_GET['x']
  5.  
  6. mysql_query('INSERT INTO table (row1, ...) VALUES ("'.$x.'", ...)')

вот примерно таким способом можно не использовать функцию mysql_escape_string()
Ну то единичные случаи но всётаки можно фильтровать так или регулярными выражениями.
12. Телевизор - 04 Декабря, 2010 - 02:42:40 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. $arr = array('1', '2', '3', '4');
  2. if(array_search($_GET['x'], $arr) === false)


это конечно оригинальный вариант для безопасности, Улыбка как я понимаю это уже будут стабильные массивы в противном случае false

сенкю...

 

Powered by ExBB FM 1.0 RC1