php referer 验证,对$_SERVER['HTTP_REFERER']验证表单来源的一点看法

《PHP5与MYSQL5 web开发技术详解》一书的第五章,“处理用户输入”中提到,可以依靠验证$_SERVER[‘HTTP_REFERER’]来提高表单的安全性,对此我来谈谈自己的看法。

原书中说道,PHP的$_SERVER服务器超级全局数组提供了一个叫$_SERVER[‘HTTP_REFERER’]的变量,用于保存上一页的来源,比如表单提交或者超级链接的URL地址。如果有人从他的计算机中提交表单或从浏览器地址中直接输入当前脚本名称,该变量会保存表单来源或为空值,这样我们就可以通过它的值进行处理。

但事实上,$_SERVER[‘HTTP_REFERER’]这个变量其实是由浏览器端提供的,这个变量的值能否取到以及是否正确,其实是由浏览器决定。Web连接是不保持状态的,所有网页信息从服务器上下载到本地,再由本地提交到服务器,因此从本地篡改$_SERVER[‘HTTP_REFERER’]的内容完全是可行的。而且在许多情况下,$_SERVER[‘HTTP_REFERER’]是取不到值的,比如访问经JavaScript产生的链接、访问Flash中的链接、用meta进行跳转时等情况,而且有些客户端(浏览器)甚至会完全没有设置这个变量。

因此,我认为用$_SERVER[‘HTTP_REFERER’]验证表单来源从而提高安全性的做法没有意义。这种做法甚至连“轻量级”都算不上,完全是在浪费资源。提高表单安全性,还是应该强调对表单数据的验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值