当前位置: 首页 > 面试题库 >

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

侯焱
2023-03-14
问题内容

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

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


问题答案:

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

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

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

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

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

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

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

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



 类似资料:
  • 问题内容: 我读到检查ajax请求的X-Requested- With标头是确保请求不来自外部的好方法。在服务器端,如何检查此标头?缺少或错误处理此标头的正确方法是什么(重定向,抛出异常等)? 问题答案: 您可以像这样检查它… 如果 只 希望通过XHR访问,那么只要不存在此标头即可。 注意 :此标头对于欺骗是微不足道的。不要依赖它,但是 看起来它来自na XHR 。

  • 我在想,为什么像谷歌Chrome/Firebug/Fiddler这样的网络检查员在使用WebSockets/channel-API这样的推送技术时无法跟踪消息(或者有没有办法做到这一点?)这是因为我们正在从HTTP升级连接吗?

  • 问题内容: 我的网站托管在不同位置的多台服务器上 到处数据格式的文化都不尽相同- 我们在每个地方都使用格式,但如果某些服务器设置了文化,则我们的网站将生成Datetime异常。 问题答案: 您应该在将字符串转换为日期时指定要使用的区域性。 您应该使用的区域性取决于日期格式的区域性。例如,如果您要解析的所有日期都被格式化为 Slovak : 然后,您需要像在 斯洛伐克(Slovakia) ()文化中

  • 下面尝试过,但是直到并且除非我使Acyah geShipmentIn绑定节点为空(删除释放ID="9.2"xmlns="http://schema.infor.com/InforOAGIS/2"xmlns: xs="http://www.w3.org/2001/XMLSchema")选择查询不获取值。

  • 我正在使用一个服务通过套接字将自己连接到一个服务器。我想要实现的是:我需要不断地检查手机是否连接到互联网上,如果是的话,就建立了与服务器的连接,并且可以进行查询。如果不是,插座就会关闭。我的问题就在这里:我的一些查询应该只做一次,其他的每两秒钟做一次,最后一次应该每X分钟做一次。 应该只调用一次的查询不是问题,但是我不知道如何处理另外两个。到目前为止,我在服务的onStartCommand中调用一

  • 多个同步服务器 Since you have full control of express instance lifecycle, it's not a problem to create a few multiple simultaneous servers (e.g. both HTTP & HTTPS). Example: 因为你已经可以完全控制express实例的生命周期了,所以创建多个