我需要停止用户将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