Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

09.01.2007, 04:50
|
|
Banned
Регистрация: 10.07.2005
Сообщений: 224
Провел на форуме: 1062041
Репутация:
50
|
|
Сообщение от Zadoxlik
Это все ясно, только ты не раскрыл тему=)
Согласен,
забыли про грамотное распределение прав в СУБД.
|
|
|

09.01.2007, 10:27
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
вы еще про хранимые функции скажите =)))
|
|
|

09.01.2007, 10:49
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 559
Провел на форуме: 1593567
Репутация:
354
|
|
Чтобы защитится от SQL Injection надо, прежде всего надо распределять по его видам.
К примеру, если мы хотим получить целое число (int) надо чтобы шла проверка что это число и правда целое.
Это можно осуществить с помощью функнии IsNumeric в таком виде:
If (not IsNumeric(Request("ID"))) then ...
Так же надо чтобы не показывались ошибки, которые приводят к взлому сайта.
Есть полно путей сделать это, но помойму лучше всего это осуществить с помощью того, что есть ошибка работа не прекратилась.
номер ошибки error resume next
|
|
|

09.01.2007, 14:09
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
надо чтобы шла проверка что это число и правда целое
Во-первых, никаких проверок не надо! Сколько раз повторять?
Во-вторых, int не может быть не целым!
|
|
|

09.01.2007, 14:56
|
|
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
Провел на форуме: 4520553
Репутация:
1316
|
|
error_reporing(0);
magic_quotes on
и числа передаваемые базе тоже обрамляем ковычками типо
и хакеры прутся полем
|
|
|

10.01.2007, 07:44
|
|
Участник форума
Регистрация: 04.01.2007
Сообщений: 112
Провел на форуме: 179531
Репутация:
48
|
|
Мой метод защиты:
Если вы передаете только текст и числа в скрипты к примеру:
index.php?modules=news&id=1
то вполне подойдет данный код:
PHP код:
function var_chek($var,$col){
$var = substr($var, 0, $col);
$var = preg_replace("/[^\w\x7F-\xFF\s]/", "", $var);
$good = ereg_replace(" +", " ", $var);
$good = strip_tags($good);
return $good;
}
$modules=var_chek($modules,10);
$id=var_chek($id,5);
Данный код не только удалит все спец символы из передаваемых строк но и обрезает по длинне, ни один XSS или SQL inj... не пройдет через этот фильтр.
|
|
|

10.01.2007, 08:04
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Воот... прекрысный пример в тему как не надо делать...
|
|
|

10.01.2007, 10:38
|
|
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
Провел на форуме: 4520553
Репутация:
1316
|
|
Примерно такой же код используется в последних версиях phpbb
|
|
|

10.01.2007, 11:47
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
так действительно делать не надо.
Лучшим средством будет типизирование параметров - явно прописать в скрипте имена параметров и их типы и соответствующе их парсить. Если int - делать intval(), если string - делать mysql_escape_string.
При выводе всех значений на экран обрамлять в htmlspecialchars, а резать это при передаче в БД - маразм.
Тут я на 100% согласен с nerezus'ом
|
|
|

10.01.2007, 15:00
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Обязательно off.
Т.к. иначе будет двойное экранирование.
И вообще magic_quotes, register_globals и т.д. отменили в PHP6, чтобы криворукие недокодеры не юзали их )
и числа передаваемые базе тоже обрамляем ковычками типо
Зачем?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|