2010-07-12 53 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屬性,取而代之的是自然合理的選項卡順序 的)