[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: hx  
PHP - Устранение строковых уязвимостей
hxДата: Пятница, 13.11.2009, 10:08 | Сообщение # 1
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
Для почти полного устранения строковых уязвимостей вы можете использовать эту функцию:
Code
function antihack($str, $len=0, $br=0) {
   $str=htmlspecialchars($str);
   $str=nl2br($str);
   if ($len>0) {$str=substr($str, 0, $len);}
   if ($br==1) {$str=str_replace('<br />', '', $str);}
   return $str;
}

У функции следующие параметры:
1). Строка для обработки;
2). Максимальная длина (необязательный параметр, по умолчанию не ограничено - 0);
3). Разрешать ли переводы строк (необязательный параметр, по умолчанию нет).
Добавьте её в ваш скрипт и используйте при файловых операциях, получении данных от пользователя методами GET и POST и т.п..
Действие функции следующее:
1). Замена html тегов их сущностями;
2). Преобразование переводов строк в тег <br>;
3). Если надо, обрезание строки до максимальной длины;
4). Если надо, уничтожение переводов строк и тегов <br>.

Добавлено (13.11.2009, 12:08)
---------------------------------------------
P.S.: функция написана X-3me и доработана мной.

 
z-kzn-zДата: Пятница, 13.11.2009, 12:53 | Сообщение # 2
Master Z
Сообщений: 160
Репутация: 49
Замечания: 0%
Статус: Вне игры
htmlspecialchars, nl2br надо использовать когда ВЫВОДИШЬ на страницу что-то, например из базы, а mysql_escape_string - когда делаешь ЗАПРОС к базе. ибо если у тебя при выводе на страницу в строке будут кавычки, а mysql_escape_string их экранирует, то вместо текста Hello, I'm z-kzn-z получится Hello, I\'m z-kzn-z. нехорошо. mysql_escape_string надо использовать в одном случае, а htmlspecialchars и nl2br и что там у тебя еще - в других случаях, записывать данные в базу, обработав htmlspecialchars совсем не обязательно...

Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...


Сообщение отредактировал z-kzn-z - Пятница, 13.11.2009, 12:54
 
hxДата: Пятница, 13.11.2009, 17:54 | Сообщение # 3
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
Ну эскэйп стринг я уберу, а насчет спецчаров я всегда так в бд и пишу
 
z-kzn-zДата: Пятница, 13.11.2009, 18:25 | Сообщение # 4
Master Z
Сообщений: 160
Репутация: 49
Замечания: 0%
Статус: Вне игры
я бы тоже не советовал.
представь: пишешь ты форум. пользователь написал что-то такое, что обрабатывается этой функцией, например тот же перевод строки. и записал ты его в базу как <br/>. и есть в форуме функция редактирования, когда читается сообщение из базы и в поле редактирования...
пользователь будет удивлен, когда вместо перевода строки, который он ввел, он увидит <br/>.
обрабатывать обратно при редактировании сообщения - это плохо, здесь тоже куча нюансов. поэтому лучше htmlspecialchars() делать при выводе на страницу. совет из опыта:)


Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...
 
hxДата: Пятница, 13.11.2009, 21:04 | Сообщение # 5
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
htmlspecialchars() не трогает <br>, проверено
 
z-kzn-zДата: Пятница, 13.11.2009, 23:22 | Сообщение # 6
Master Z
Сообщений: 160
Репутация: 49
Замечания: 0%
Статус: Вне игры
ну да, я о nl2br говорю, просто забыл его написать.
ну какая разница, зато допустим юзер ввел символы < и >, а оно превратило их в &lt; и &gt;
ну ты понял о чем я


Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...


Сообщение отредактировал z-kzn-z - Пятница, 13.11.2009, 23:23
 
hxДата: Суббота, 14.11.2009, 08:54 | Сообщение # 7
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
Не совсем понял, ведь юзеру нет разницы, &лт; или <, увидит он в любом случае <
 
z-kzn-zДата: Суббота, 14.11.2009, 10:42 | Сообщение # 8
Master Z
Сообщений: 160
Репутация: 49
Замечания: 0%
Статус: Вне игры
ладно, забудь. как я говорил, это дело каждого, как что писать. а ты крут))

Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...


Сообщение отредактировал z-kzn-z - Суббота, 14.11.2009, 10:45
 
  • Страница 1 из 1
  • 1
Поиск:

Приветствуем, Гость


Гость, предлагаем тебе авторизироваться:



Меню


Статистика



© Dinedi.RU, 2007-2024 || Хостинг от uCoz