阻止用户输入javascript而不是url以在href中使用
我需要阻止用户将javascript放入应该是链接字段的内容中。我知道我可以在他们输入的url的开头检查“javascript:”,但我想知道是否有某种方法可以构造阻止用户输入javascript而不是url以在href中使用,javascript,href,sanitization,Javascript,Href,Sanitization,我需要阻止用户将javascript放入应该是链接字段的内容中。我知道我可以在他们输入的url的开头检查“javascript:”,但我想知道是否有某种方法可以构造标记,强制它将href作为地址?我觉得这将是一个更好的解决方案,因为人们总是想办法绕过基本检查。没有纯HTML的方法强迫标签将href作为URL 据我所知,您唯一可以做的事情就是检查href属性中的javascript。没有纯HTML方法强制标签将href作为URL处理 据我所知,你唯一能做的就是检查href属性中的javascrip
标记,强制它将href作为地址?我觉得这将是一个更好的解决方案,因为人们总是想办法绕过基本检查。没有纯HTML的方法强迫标签将href作为URL
据我所知,您唯一可以做的事情就是检查href属性中的javascript。没有纯HTML方法强制标签将href作为URL处理 据我所知,你唯一能做的就是检查href属性中的javascript。一个有趣的解决方案(如果你问我的话,它非常有效),就是将
http://
放在尚未以它开头的URL前面。这是我的意思的草图:
if(url.slice(0,"http://".length) !== "http://" && url.slice(0,"https://".length) !== "https://") {
url = "http://" + url;
}
一个有趣的解决方案(如果你问我的话,也是非常有效的),就是把http://
放在还没有开始的URL前面。这是我的意思的草图:
if(url.slice(0,"http://".length) !== "http://" && url.slice(0,"https://".length) !== "https://") {
url = "http://" + url;
}
我猜白名单比黑名单好,并检查http(s)协议。我猜白名单比黑名单好,并检查http(s)协议。您总是可以预先编写http://或https://协议。可能需要替换以删除任何现有http或https 即使你有
http://javascript:alert('test');
javascript将不会运行。您可以始终在http://或https://协议前面加上前缀。可能需要替换以删除任何现有http或https 即使你有
http://javascript:alert('test');
javascript将不会运行。首先,您应该认识到,可以操纵浏览器提交用户想要的任何内容,因此客户端验证既不必要也不充分,只是方便(用户) 鉴于此,我想到了一个简单的过程:
- 通过在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
}
首先,您应该认识到,可以操纵浏览器提交用户想要的任何内容,因此客户端验证既不必要也不充分,只是方便(用户) 鉴于此,我想到了一个简单的过程:
- 通过在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
}
为了什么?是否将此字段发送到服务器?如果是这样的话,验证就应该在最后进行。任何人都可以随意摆弄客户端,让它做任何他们想做的事情。这是为了阻止用户制造XSS攻击。目的是什么?是否将此字段发送到服务器?如果是这样的话,验证就应该在最后进行。任何人都可以和客户端鬼混,让它做任何他们想做的事情。这是为了阻止用户制造XSS攻击。这就是我的想法。我可能只是要求URL以http或HttpSt开头,这就是我的想法。我可能只是要求URL以http或https开头