Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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 CURL的远程脚本登录到网站_Php_Security_Curl_Login - Fatal编程技术网

防止使用PHP CURL的远程脚本登录到网站

防止使用PHP CURL的远程脚本登录到网站,php,security,curl,login,Php,Security,Curl,Login,有哪些方法可以用来防止远程PHP脚本使用CURL登录登录页面?检查推荐人和用户代理将不起作用,因为可以使用CURL设置它们。理想的解决方案是在不使用验证码的情况下解决这个问题,这就是问题的重点,试图找出这是否可行。没有任何方法可以简单地阻止它。如果脚本知道用户名和密码,他们将能够登录 您可以使用验证码,这样自动登录就无法读取验证码,但这也会给实际用户带来负担 如果您担心它被用于尝试和强制登录,那么在多次尝试之后,您可能需要一些额外的信息 禁用帐户并要求通过电子邮件重新激活 多次尝试失败后需要验

有哪些方法可以用来防止远程PHP脚本使用CURL登录登录页面?检查推荐人和用户代理将不起作用,因为可以使用CURL设置它们。理想的解决方案是在不使用验证码的情况下解决这个问题,这就是问题的重点,试图找出这是否可行。

没有任何方法可以简单地阻止它。如果脚本知道用户名和密码,他们将能够登录

您可以使用验证码,这样自动登录就无法读取验证码,但这也会给实际用户带来负担

如果您担心它被用于尝试和强制登录,那么在多次尝试之后,您可能需要一些额外的信息

  • 禁用帐户并要求通过电子邮件重新激活
  • 多次尝试失败后需要验证码

如果我理解正确:

  • 您拥有执行登录脚本的登录页面
  • 登录脚本被远程cURL脚本攻击
解决方案 在登录页面中放置隐藏元素和唯一密码什么只能发生一次,在会话中保存此密码,在登录脚本会话中查找此代码,与发布到脚本中的内容进行比较,如果要继续,请清除会话


关于主题的更多信息:

一种方法是在您的登录表单中包含一些JavaScript,并使其在JavaScript运行之前无法成功提交表单。这使得您的登录表单仅可用于启用JavaScript的用户,而CURL没有启用JavaScript。如果必要的JavaScript是某种每次都不同的质询/响应(例如,使用类似于使其不平凡的东西),那么表单中正确设置的值的存在就是JavaScript运行的良好证据


但是,您无法停止所有自动脚本,编写驱动实际浏览器引擎的脚本非常容易,而且它们将通过此测试。

cURL与任何其他客户端(例如浏览器)没有什么不同。您可以在隐藏的输入字段中使用绑定到会话的nonce来防止直接发出POST请求,但仍然有办法解决这个问题。如果您担心的是暴力攻击,那么限制每分钟的登录尝试次数也是一个好主意。

为什么要禁止cURL访问?如果有那么大的一笔交易,加上reCAPTCHA。回答得好。您还可以在登录页面上使用JavaScript,并使用一些令牌等来验证这一点,但最终您无法阻止cURL,因为它与web浏览器一样工作。请注意,要求JavaScript使用您的站点通常是一种罪恶。我们可以用页面中包含JavaScript的curl来废弃该站点吗?如何绕过它?您将无法使用会话阻止cURL。它只需要一个稍微复杂一点的脚本来接受和发送cookie。