我有,我已經把驗證代碼,不要讓<script>
標籤和Javascript代碼一個文本,但用戶可以像<strong onmouseover=alert(2)>
輸入描述。過濾出JavaScript注入
因此,當有人懸停在此字符串標籤JS警告框出現。
我該如何阻止這種JavaScript注入?
我有,我已經把驗證代碼,不要讓<script>
標籤和Javascript代碼一個文本,但用戶可以像<strong onmouseover=alert(2)>
輸入描述。過濾出JavaScript注入
因此,當有人懸停在此字符串標籤JS警告框出現。
我該如何阻止這種JavaScript注入?
有很多稱爲html淨化器的工具。例如,您可以嘗試this。
最簡單的答案是replace(/</g,'<');
,但當然防止任何 HTML被使用。這就是BBCode,Markdown和其他類似語言存在的原因:提供格式化功能而不授予用戶發佈任意代碼的權限。
或者,只是搜索模式/\bon[a-z]+=/i
的事情你需要正確過濾您允許HTML。正如你發現的那樣,這不是微不足道的。 (您可能需要禁止iframe
和其他幾個元素。)
正確的消毒需要白名單中的元素,並且在這些白名單中包含每個元素允許的屬性。顯然,各種onXyz
屬性不在白名單中。
消毒必須發生在服務器端,因爲任何客戶端都可以被繞過。所以不知道你使用的服務器技術,不能推薦一些東西。例如,JSoup對於Java來說是衆所周知的,但當然,如果您不使用Java,那對您沒有用處。 :-)對於.NET,還有的HTML Agility Pack或Microsoft Anti-XSS library,但是這是一個非常不全名單。