我想使用传递document.referrer值的表单分配要提交的变量。我使用下面的工作。但是,我担心有人可能会修改他们的document.referrer来插入恶意的PHP代码。
在使用之前,我怎么能先检查document.referrer是否是网址而不是其他代码?
<script type="text/javascript" charset="utf-8">
window.onload = function() {
document.getElementById("prevurl").value=document.referrer;
}
</script>
<input id="prevurl" name="prevurl" type="hidden"></input>
答案 0 :(得分:1)
客户端验证没有意义(至少在安全方面,它在许多情况下当然可以是一个很好的UX /可用性功能)。您为referer实现的任何检查(无论现在是否有意义),攻击者可以从javascript中删除它,或者明确地发布表单变量的任何值。验证需要是服务器端。
在服务器上,接收任何输入(包括碰巧有效的字符串或其他任何其他内容,如果已评估)是安全的。这可能是一个问题,你用它做什么。您必须小心并记住,来自请求的任何内容都是用户输入的,恶意用户可能已发送任何内容。你显然不希望eval()它作为php,你不想在不考虑SQL注入的情况下在SQL查询中使用它,你不想把它写回到未编码的页面(那将是一个XSS的形式,您不希望您的访问控制决策直接基于用户输入等。
但只接收(甚至存储) 确定。