2010-07-12 57 views
0

这是正确的是否会提醒?

<a href="#" style="color:#FFF;"onclick="add('alert("Google !")');" id="cricket" tabindex="1" name="cricket">cricket</a> 
+4

Dunno。你有没有尝试过? :P – Matchu 2010-07-12 05:48:12

+0

答案取决于你想要做什么。 – Stephen 2010-07-12 05:52:02

回答

1

onclick="add('alert("Google !")');"被解析为:

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

你必须逃脱内报价,否则他们终止字符串:

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

除此之外,要看是什么add()一样。

+0

我不认为反斜杠在HTML中是这样工作的。我已经能够在网站上找到XSS漏洞,因为他们在那里使用'addslashes',但实际上并不适用。 – Matchu 2010-07-12 05:51:51

+0

@Matchu Long修复。最近用HTML工作得太少......;) – deceze 2010-07-12 05:54:09

+0

尼斯:)回答撤消赞成更清晰的解释。 – Matchu 2010-07-12 05:55:27

1

onclick="add('alert(" 

你没有你的属性值中一个完整的JavaScript语句。

一些作者使用字符实体引用“&quot;”来编码双引号(“)的情况下,因为该字符可以被用于分隔属性值

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

(正如旁白:

  • 不要使用HREF = “#”,build on stuff that works
  • 不要使用样式属性,不同的表现形式和内容
  • 不要忘记把你的属性之间的空间
  • 不要用固有的事件属性(如onclick),使用unobtrusive JS(这也将解决嵌套引号的问题)
  • 如果可能的话,避免tabindex属性,取而代之的是自然合理的选项卡顺序 的)