我需要停止用戶將JavaScript放入應該是鏈接字段的位置。我知道我可以在他們輸入的網址開頭檢查「javascript:」,但我想知道是否有某種方法可以構建<a>
標籤來強制它將href作爲地址對待?我覺得這將是一個更好的解決方案,因爲人們總是想方設法避開基本檢查。防止用戶輸入javascript而不是用於在href中使用的url
0
A
回答
3
一個有趣的解決方案(如果你問我,非常有效)是將http://
放在尚未開始的URL前面。這是我的意思的草圖:
if(url.slice(0,"http://".length) !== "http://" && url.slice(0,"https://".length) !== "https://") {
url = "http://" + url;
}
+0
這可能是一個很好的解決方案。謝謝。 – 2010-11-29 20:21:42
0
沒有強制標籤將href作爲URL對待的純HTML方式。
你唯一能做的就是檢查href屬性中的javascript。
1
更好的白名單比黑名單和檢查http(s)協議,我猜。
1
您總是可以預先安裝http://或https://協議。可能需要替換才能刪除任何現有的http或https。
即使你有
http://javascript:alert('test');
的JavaScript將無法運行。
1
首先,您應該認識到瀏覽器可以被操縱爲提交用戶想要的任何內容,因此客戶端驗證既不必要也不足夠,只是方便(對用戶)。
鑑於這種情況,一個簡單的過程,想到:
- 強制每個URL是需要在URL的開頭協議規範絕對的。
- 強制該協議是{http,https}之一。
試試這個:
function validateUrl(value) {
return value.match(/^(http|https):\/\//) != null;
}
if(validateUrl(inputField.value)) {
// value is acceptable
} else {
// value is not an acceptable URL
}
相關問題
- 1. CakePHP的防止用戶輸入URL
- 2. 使用href而不是輸入
- 3. 如何防止由於用戶輸入而導致值相乘?
- 4. 防止用戶在窗體中輸入空白帖子javascript/angular
- 5. 輸出用戶輸入 - 防止xss
- 6. 在數據庫中使用MD5(URL)而不是URL用於WHERE
- 7. 防止用戶輸入一次註銷
- 8. 如何防止用戶輸入?
- 9. 如何防止用戶輸入小數?
- 10. 如何防止用戶輸入褻瀆?
- 11. 使用C++獲取用戶輸入而不停止程序
- 12. 如何防止用戶直接輸入url
- 13. 如何防止用戶使用JQuery輸入特定值?
- 14. 如何防止用戶輸入錯誤的輸入?
- 15. 在SuggestBox中防止無效的用戶輸入?
- 16. 防止用戶在c中的空控制檯輸入#
- 17. 使用INSERT IGNORE防止重複輸入
- 18. 提示用戶輸入,而不是使用變量
- 19. 使用JavaScript/jQuery防止SQL注入
- 20. 如何防止用戶在datetimepicker中輸入特定時間?
- 21. 防止用戶輸入在二維數組中重疊 - java
- 22. 防止用戶在文本框中輸入某些字符
- 23. 防止用戶在textarea中輸入某個單詞
- 24. 防止用戶在DataWindow列中輸入特定字符
- 25. 防止用戶輸入在C++中做選擇?
- 26. 防止註銷用戶訪問可用於登錄用戶的url鏈接
- 27. c#讀取用戶輸入而不停止應用程序
- 28. 阻止UIWebView輸入顯示UIKeyboard而不禁用用戶交互
- 29. 防止用戶訪問而不復制用戶驗證邏輯
- 30. 使用javascript將表單輸入值插入到href目標URL中
爲了什麼目的呢?該字段是否發送到服務器?如果是這樣,驗證應該發生在那邊。任何人都可以隨時與客戶一起做任何想做的事情。 – spender 2010-11-29 20:12:22
這是爲了阻止用戶製造XSS攻擊。 – 2010-11-29 20:19:58