ПравилаРегистрацияВход
НАВИГАЦИЯ

Защита сайта

Модераторы: нет
Список форумов » Вэб-разработкаНа страницу 1, 2, 3, 4, 5, 6, 7, 8 
АВТОРСООБЩЕНИЕ
renak
Avatar
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)

Не доверяйте данным переданным с cookie, их можно подменить.
Еще запретите просмотр дирректории в случае если неверно набран url='http://renak/bl/' где нет файла index... Запретить это можно с помощью файла
.htaccess
Содержимое файла
Options -Indexes

Где вы не стали защищать файлом .htaccess можно защитить от сбора данных по дирректории ботом поисковиком. Для этого создайте файл robots.txt в корневой папке.
т.е. по адресу http://renak/robots.txt
Содержимое файла:
User-Agent: *
Disallow: /functions/
Disallow: /bl/
Disallow: /ad/



И указываем после Disallow: папки которые не надо сканировать.



Вроде указал самое главное, что не указал надеюсь дополнят, или пополню я.
renak
Avatar
22 октября 2009, 19:23
if(!filter_var($mail, FILTER_VALIDATE_EMAIL))
{exit('Вы ввели неверно Email, вернитесь назад и повторите попытку.');}

//----Проверка на верность введения email(a)
renak
Avatar
22 октября 2009, 19:44
Пароли шифровать в БД лучше через md5()
Или придумайте свою функцию
renak
Avatar
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
Avatar
25 октября 2009, 14:22
После mysql_query()
Не забываем делать проверку

if(@!mysql_num_rows($r)){exit('WARNING');}
Toha82
Avatar
Имя: Тоха
Сейчас нет на сайте
Репутация: 0
Регистрация: 19.06.2009
Всего сообщений: 665
Откуда: Омск
5 декабря 2009, 12:15
Альтернативного кода защиты нет. Можно защитить код так,что производительность будет равна нулю. Но это не даст гарантии что не найдут уязвимость. В php каждый месяц уязвимость находят))))
code9
Avatar
Сейчас нет на сайте
Репутация: 0
Регистрация: 5.03.2009
Всего сообщений: 480
5 декабря 2009, 17:08
Уже @ не используют,вчерашний день. Ошибки надо находить,а не подавлять.
renak
Avatar
14 декабря 2009, 19:33
code9, если кодер "зеленый" в этом деле то ему не нужно использовать @, если кодер опытный, то он знает что лубая открытая ошибка может привести к последствиям, допустим та же SQL инъекция строится на данных ошибки запроса. Так что не пиши того чего плохо знаешь. Еще можно в настройках пхп ини отключить и в htaccess но это вообще не советую, если только на серваке а не локалке. Проблема в том что могут отключить функцию подавления ошибок в новой версии сервера вот тогда и будет сюрприз.
renak
Avatar
14 декабря 2009, 19:36
if(!is_numeric($e)){exit('he he');}
// Пропускает только целое число

Лучше ее не исаользовать. Пропускает целые положительные и отрицательные числа, а отрицательное ошибку может вызвать.

$e=abs($e); //Только положительное целое число, в противном случае примит значение 1
renak
Avatar
14 декабря 2009, 19:39
Toha82, В php каждый месяц уязвимость находят

На одном форуме написали что в пхп6 исправили 3тыс ошибок.


Можно защитить код так,что производительность будет равна нулю. Без защиты никак, я привел то что я использую.
Список форумов » Вэб-разработкаНа страницу 1, 2, 3, 4, 5, 6, 7, 8 След.
  
Страница 1 из 8
Часовой пояс: GMT + 4
Мобильный портал, Profi © 2005-2016
Время генерации страницы: 0.037 сек
Общая загрузка процессора: 4%
SQL-запросов: 4
Rambler's Top100