Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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
Javascript API请求:如何确保仅';允许';webforms会收到答复吗?_Javascript_Php_Authentication - Fatal编程技术网

Javascript API请求:如何确保仅';允许';webforms会收到答复吗?

Javascript API请求:如何确保仅';允许';webforms会收到答复吗?,javascript,php,authentication,Javascript,Php,Authentication,我经营一个免费创建数字生成内容的网站。我的访问者也不需要帐户来开始下载。它的工作非常简单:最终用户填写表单,表单向PHP脚本(“API”)发送请求,PHP脚本返回结果 ? +---------+ +---------+ | | -----------> | | |FORM.html| | API.php | | |<

我经营一个免费创建数字生成内容的网站。我的访问者也不需要帐户来开始下载。它的工作非常简单:最终用户填写表单,表单向PHP脚本(“API”)发送请求,PHP脚本返回结果

                 ?                  
+---------+              +---------+
|         | -----------> |         |
|FORM.html|              | API.php |
|         |<-------------|         |
+---------+              +---------+
               digital              
               content              
?
+---------+              +---------+
|         | -----------> |         |
|FORM.html | | API.php|
|         |
我也考虑过在表单中添加额外的变量,但这也没有帮助。黑客只需要识别和复制这些变量

通过不每次使用(并检查)相同的值,而是使用只能在有限时间内使用一次的令牌,您可以让这变得更加困难。这基本上就是所谓的CRSF令牌

有关该主题的更多信息的一些链接:




您尝试使用CSRF令牌对抗的典型攻击/问题是有人触发允许登录用户以其名义执行的操作;但是,在像这里这样的情况下,您可以用一种非常类似的方式实现它,以尝试阻止人或机器人在不使用表单的情况下向您的端点发送数据。

您不能。这基本上相当于DRM,它从未起过作用。无论您要求客户如何检查,它都可能对您的服务器撒谎。@JosephSible谢谢您的回答/评论!@“所有其他人”,为什么投反对票?不是每个人都是专家。。。我觉得我的问题是具体的,我表明我已经做了研究并试图解决它。这真的是一个低质量的问题吗?如果是这样的话:为什么?“我也考虑过在表单中添加额外的变量,但这也没有帮助。黑客只需要识别和复制这些变量。”-你可以让这变得更难,不必每次都使用(并检查)相同的值,而是使用只能使用一次且时间有限的令牌。这基本上就是所谓的CRSF令牌…另一种方法当然是使用验证码。这些都不是很方便用户,但“机器人”在大部分情况下仍然很难绕过它们。@misorude CRSF听起来确实是目前为止最好的解决方案。谢谢,我不知道这项技术的名称,现在我可以进一步研究它。事实上,验证码也是一个非常明显的开始。这(很糟糕)试图确保循环中有人,但根本没有试图验证请求是否来自网站自身的表单。@Suzie如果您能解释一下您的脚本是API的示例实现,那就好了。@Suzie否,你的答案现在仍然和编辑前一样糟糕。你的代码的任何读者都应该清楚,他们是如何完全绕过它提供的所有“安全性”的。请帮助我们。实际上,我在自己的网站上使用了服务器名称示例,我使用它包装了所有页面内容。我一直想改进,给我们举个例子,我看到你自己也是一个出色的程序员。CSRF令牌在这里没有帮助。询问者希望防御非网站的内容(例如客户端本地机器上调用wget/curl的脚本),因此不受同源策略的约束。这样的脚本只需获取表单,刮取值,然后在提交表单时使用它。@JosephSible如前所述,这会让它变得更难,机器人程序无法只分析表单结构一次,他们每次都必须请求一个新表单才能获得有效令牌。如果有人真的付出努力,这是无法阻止的,这一点很清楚。CAPTCHA被认为是一种限制人类使用的替代方案,但被认为具有侵入性。
   Use google Captcha in your form
   https://www.google.com/recaptcha
   //take a leaf out of payment gateway validation
    $acceptfrom = array(
        'www.yourserver.com',
        'yourserver.com'
    );



    if( !in_array( $_SERVER['REMOTE_ADDR'], $acceptfrom ) )
    {
        //break and redirect to another page here
    } else {
    //include Captcha validation here
    //validate form variables and send to API

    }