小编典典

如何检查来自同一服务器还是不同服务器的请求?

php

如何检查是否从同一服务器发送了请求?

说,我的网域位于www.domain.com。现在,我有php处理文件,它将处理通过该域托管的表单。仅当请求是从域内发送时才执行此过程。www.domain.com以及从其他域发送的任何其他请求将被丢弃。


阅读 303

收藏
2020-05-29

共1个答案

小编典典

基本上:您不能。
使用HTTP协议,每个请求彼此独立。

第一个想法是检查Referer HTTP标头,但请注意:

  • 可以伪造 (由浏览器发送)
  • 它并不总是存在。

因此:不是一个可靠的解决方案。

一种可能的方法(比Referer的想法好得多)是使用
nonce

  • 显示表单时,在其中添加一个隐藏的输入字段,其中包含一个随机值
  • 同时,将该随机值存储到与用户相对应的会话中。
  • 提交表单后,请检查隐藏字段的值是否与会话中存储的值相同。

如果这两个值不相同,请拒绝使用提交的数据。

注意:此想法通常用于帮助对抗 CSRF 并集成在某些框架的“表单”组件中 ( 例如Zend
Framework

2020-05-29