Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 阻止其他网站向我的服务器发送请求_Php_Html_Http_Server - Fatal编程技术网

Php 阻止其他网站向我的服务器发送请求

Php 阻止其他网站向我的服务器发送请求,php,html,http,server,Php,Html,Http,Server,考虑以下web应用程序:前端包含一个按钮和一些滑块。按下按钮时,将向服务器发送请求以及滑块值。服务器调用python脚本并根据滑块值生成一些内容,然后内容显示在前端 如何防止其他人实施类似的应用程序,向同一服务器发送请求以生成内容?您正在寻找的解决方案称为。为了防止这种情况发生,您需要遵循几个基本步骤 生成唯一的令牌(类似于散列) 将此令牌发送到前端,并在请求URL中使用此哈希(可能在请求负载或查询参数中) 在服务器上收到请求后,验证哈希 如果散列有效,则继续操作,并作为响应生成一个新的散列(将

考虑以下web应用程序:前端包含一个按钮和一些滑块。按下按钮时,将向服务器发送请求以及滑块值。服务器调用python脚本并根据滑块值生成一些内容,然后内容显示在前端


如何防止其他人实施类似的应用程序,向同一服务器发送请求以生成内容?

您正在寻找的解决方案称为。为了防止这种情况发生,您需要遵循几个基本步骤

  • 生成唯一的令牌(类似于散列)
  • 将此令牌发送到前端,并在请求URL中使用此哈希(可能在请求负载或查询参数中)
  • 在服务器上收到请求后,验证哈希
  • 如果散列有效,则继续操作,并作为响应生成一个新的散列(将在下一个请求中使用)并销毁当前散列(以便无法重用)
  • 如果哈希无效,则拒绝请求并显示一些错误消息
  • 以下是一些您可能需要查看的参考资料:


    如果您的问题是另一个站点调用您的服务,一个简单的解决方案是检查收到的请求的来源头是否等于您的主机名和/或域

    像这样:

    <?php
    
    // This will check the Origin header
    
    if($_SERVER['HTTP_ORIGIN'] == "http://yoursite.com") {
        header('Access-Control-Allow-Origin: http://yoursite.com');
        // your custom logic to return the slide content
    } else {
       // return a 404 error
    }
    

    我想您可能需要的是一个CSRF令牌。到目前为止您尝试了什么?为什么不使用某种身份验证?我读过关于CSRF的文章,但据我所知,它们用于不同的目的,但也许我错了,这是否会阻止某人复制前端代码并在另一个网站上创建相同的服务?是的,当然,有两个条件,即。,您的哈希/令牌生成和验证系统不应该公开,并且实现应该足够安全,以至于没有人能够猜到哈希。但这可能取决于前端与服务器的通信方式?是基于纯API调用/响应还是后端发送HTML(视图)响应?