2012-04-01 3 views
0
function filter($p){ 
    $i=0; 
    return str_replace("<","&lt;",str_replace(">","&gt;",str_replace("&","&amp;",$p,$i),$i),$i); 
} 

Любая идея проходит эту профилактику xss? только моя идея, а не домашняя работаXSS-атака через этот фильтр?

+1

Почему бы вам просто не использовать htmlspecialchars()? –

+0

Предположим, что кодер noob и он не знает htmlspecialchar(): D Я не говорю о том, как предотвратить, я хочу знать, как атаковать: D – n0b0dybk

+3

Offtopic - этот сайт не предназначен для просмотра кода. Это то, что для http://codereview.stackexchange.com/. Но, как правило, не сворачивайте свой «код безопасности». Если вы не эксперт, ВСЕГДА будет один или несколько случаев краев, которые ваш код пропустит. –

ответ

2

Как поднято в вопросе errata, проблема здесь заключается в том, что вы пытаетесь свернуть свою собственную замену на htmlspecialchars в PHP. В то время как вы попросили провести обзор кода пятна для определения потенциального XSS exploit, вы на самом деле указали на запах дизайна в своем приложении относительно того, как вы справляетесь с уязвимостями.

В то время как вы можете выполнять итеративный fixups или режим ввода дезинфекцию, как вы, кажется, пытаетесь сделать (примечание this answer about black- and white-lists), вы бы лучше служили чтением this documentation on how to address and mitigate XSS exploits и this additional documentation. Он должен предлагать рекомендации по анализу и перестройке вашего приложения для безопасного и безопасного обращения с этими угрозами, вместо того, чтобы swiss-cheesing стратегии смягчения последствий по нескольким исправлениям в коде.

(Additional helpful resource)

удачи с приложением!

0

Никогда не используйте черный список. Всегда используйте белый список. Read for example here о большом количестве различных атак. Мышление-провокация :)

1

Возможно. Например, если filter используется в в HTML-тег, например:

<input type="text" value="<?=filter($p)?>"> 

злоумышленник может выполнить атаку XSS на принуждении $p в быть что-то вроде:

something" onfocus="javascript:alert('test') 

Так вывод HTML становится:

<input type="text" value="something" onfocus="javascript:alert('test')"> 
Смежные вопросы