2010-07-12 2 views

ответ

1

onclick="add('alert("Google !")');" в настоящее время анализируется как:

onclick  # attribute name 
= 
"add('alert(" # string 
Google !  # random garbage 
")');"   # another string 

Вы должны будете бежать внутренние кавычки, в противном случае они завершают строку:

onclick="add('alert("Google !")');" 

Кроме того, это зависит от того, что делает add().

+0

Я не думаю, что обратная косая черта работает так, как в HTML. Я смог найти отверстия XSS на веб-сайтах, потому что там они используют «addlashes», где это действительно не применяется. – Matchu

+0

@Matchu Long фиксированный. Работа слишком мало с HTML в последнее время ...;) – deceze

+0

Nice :) Ответ отменен в пользу более четкого объяснения. – Matchu

1

No.

onclick="add('alert(" 

Вы не имеете полное выражение JavaScript внутри вашего значения атрибута.

Некоторых авторы используют символьную ссылку на сущность «"» для кодирования экземпляров двойной кавычки ("), поскольку этот символ может использоваться для разделения значений атрибутов

-. http://www.w3.org/TR/html4/charset.html#h-5.3

(И как в сторону:

  • не используйте HREF = "#", build on stuff that works
  • Не используйте атрибут стиля, отдельное представление и содержание
  • Не забудьте поставить пробел между вашими атрибутами
  • Не используйте присущие атрибуты событий (например, OnClick), используйте unobtrusive JS (который также будет решать проблема вложенных кавычек)
  • Где это возможно, избегать TabIndex в пользу разумной естественной табуляции )
Смежные вопросы