Анти-XSS и классический ASP

В настоящее время я пытаюсь защитить свое классическое приложение ASP от XSS. Я наткнулся на AntiXSS от Microsoft в сети, и мне было интересно, будет ли это работать с классическим приложением?

Если нет, у вас есть идеи, как я могу продезинфицировать струны?


person Steoates    schedule 07.04.2009    source источник


Ответы (5)


Чтобы очистить строки, я бы закодировал весь вывод в HTML, чтобы вам не пришлось возиться со специальными символами или огромными выражениями регулярных выражений.

Server.HTMLEncode(string) 

Двумя наиболее важными контрмерами для предотвращения атак межсайтового скриптинга являются:

  • Ограничить ввод.
  • Кодировать вывод.

через Как: предотвратить межсайтовое выполнение сценариев в ASP.NET (i знаю, что я не классический asp, но есть похожие принципы)

person missaghi    schedule 07.04.2009
comment
@Steoates: Это вообще неплохое решение. - person John Gietzen; 07.04.2009
comment
И если вам действительно нужно отображать форматированный текст (устаревшая система, вздох), написание функции очистки для использования нескольких регулярных выражений - по крайней мере, шаг в правильном направлении. - person Dave DuPlantis; 28.10.2009
comment
Согласно OWASP просто HTMLEncoding недостаточно. См.: - person blischalk; 07.12.2016
comment
@rizzle Вопрос OP: как мне сделать X? и ваш комментарий: вы должны сделать X? Да, КАК мы это делаем? - person Stephen R; 05.09.2017

Если в классическом ASP функций нет, напишите их.

person Scott    schedule 07.04.2009
comment
ссылки битые :( - person whisk; 17.12.2020

Если вам нужно разрешить определенные теги HTML (как я это делаю в моем текущем проекте), вы можете использовать регулярное выражение, чтобы разрешить только эти теги и никаких других, например:

set objRegExp = new RegExp
with objRegExp
    .Pattern = "<^((b)|(i)|(em)|(strong)|(br))>.*</.*>"
    .IgnoreCase = varIgnoreCase
    .Global = True
end with
cleanString = objRegExp.replace(originalString, "")
person Dave DuPlantis    schedule 28.10.2009

Это непросто - вам нужно будет создать оболочку, вызываемую через COM, установить на серверы и т. Д. Я просто не думаю, что она подходит для «классического» ASP.

person Marc Gravell    schedule 07.04.2009

person    schedule
comment
Я знаю, что это немного устарело, но заголовок X-XSS-Protection устарел в Chrome, не работает в Firefox и уже устарел в Edge. Это Недостаточная защита от XSS. HTML закодировал ваш вывод, как предлагает @missaghi выше. - person Brian Sizemore; 10.02.2020
comment