Вэб-разработка
Защита сайта
renak
22 октября 2009, 19:03
Такой темки не увидел вот решил привести распространенную защиту ))
//Ограничивает количество символов
$title=substr(title,0,40);
$title=htmlspecialchars($title);
//Не пропустит JAVA и HTML код. Мнемонизирует <> '' "" &
$text=strip_tags($text);
//Для защиты от html тегов не очень хороший вариант, так как ее очень легко обойти
if(!is_numeric($e)){exit('he he');}
// Пропускает только целое число
$f ='![^0-9]!i'; //- только числа
$f = '![^a-z0-9]!i'; //-числа и английские буквы
$f = '![^a-Я0-9]!i'; //-Русские и аднгийские, и числа
if(preg_match($f, $ir)){echo 'содержит запрещенные символы'; exit();}
ПРИ РАБОТЕ С БД
$author = addslashes($author); //-Экранирует кавычки
Используете проверку на успешный вывод
if($result!=true){exit('false');}
$r = mysql_escape_string($r) - мнемонизирует строку для использования при работе с бд.
Эта функция несет в себе экранирование кавычек как в addslashes
При каждой работе с БД желательно ставить блокирование ошибки, т.к. Это может стать в дальнейшем причиной доступа к данным в БД.
@mysql_query('SELECT ...');
Если вы будите только вытаскивать ,вставлять, изменять, добавлять, удалять
записи из бд то в MySQL поставьте пользователю 'Глобальные привилегии SELECT, INSERT, UPDATE. (ПРИ любом случае оставьте 2х пользователей. Один с ограниченными правами, другой со всеми доступными. На локалке при удалении пользователей root вы заблокируете доступ в phpMyAdmin)
Не доверяйте данным ...
Читать далее
-------
renak
22 октября 2009, 19:23
if(!filter_var($mail, FILTER_VALIDATE_EMAIL))
{exit('Вы ввели неверно Email, вернитесь назад и повторите попытку.');}
//----Проверка на верность введения email(a)
-------
renak
22 октября 2009, 19:44
Пароли шифровать в БД лучше через md5()
Или придумайте свою функцию
-------
renak
23 октября 2009, 21:30
При передаче переменных прверяйте их функцией
if(empty($_POST['www'])){ /*- если переменная равна пустоте или = 0*/
exit('Вы не ввели поле www');}
Не забывайте использовать exit()
Эта функция прекращает работу скрипта, что поможет избежать дальнейших ошибок
@$r = mysql_query('SELECT `table`...');
while(@d=mysql_fetch_array($r)){
if($d!=true) {exit('Выборка не произошла');}
echo 'Ok';
}
-------
renak
25 октября 2009, 14:22
После mysql_query()
Не забываем делать проверку
if(@!mysql_num_rows($r)){exit('WARNING');}
-------
Toha82 (off) [665]
5 декабря 2009, 12:15
Альтернативного кода защиты нет. Можно защитить код так,что производительность будет равна нулю. Но это не даст гарантии что не найдут уязвимость. В php каждый месяц уязвимость находят))))
-------
code9 (off) [479]
5 декабря 2009, 17:08
Уже @ не используют,вчерашний день. Ошибки надо находить,а не подавлять.
-------
renak
14 декабря 2009, 19:33
code9, если кодер "зеленый" в этом деле то ему не нужно использовать @, если кодер опытный, то он знает что лубая открытая ошибка может привести к последствиям, допустим та же SQL инъекция строится на данных ошибки запроса. Так что не пиши того чего плохо знаешь. Еще можно в настройках пхп ини отключить и в htaccess но это вообще не советую, если только на серваке а не локалке. Проблема в том что могут отключить функцию подавления ошибок в новой версии сервера вот тогда и будет сюрприз.
-------
renak
14 декабря 2009, 19:36
if(!is_numeric($e)){exit('he he');}
// Пропускает только целое число
Лучше ее не исаользовать. Пропускает целые положительные и отрицательные числа, а отрицательное ошибку может вызвать.
$e=abs($e); //Только положительное целое число, в противном случае примит значение 1
-------
renak
14 декабря 2009, 19:39
Toha82, В php каждый месяц уязвимость находят
На одном форуме написали что в пхп6 исправили 3тыс ошибок.
Можно защитить код так,что производительность будет равна нулю. Без защиты никак, я привел то что я использую.
-------
Ответить на тему
стр. 1,2,3,4,5,6,7,8 След.
Вэб-разработка
Список форумов
На главную
0.029 сек
SQL: 4