Вэб-разработка
Защита сайта

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