Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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中的post访问我的网站_Php_Logging - Fatal编程技术网

如何防止用户通过php中的post访问我的网站

如何防止用户通过php中的post访问我的网站,php,logging,Php,Logging,我想阻止我的用户从其他网站登录 如果他们在他们的网站上使用与我相同的登录表单,并将我的网站url置于其表单的活动属性中,他们可以登录我的网站,因为我没有放置任何证券 如果他们试图从外部网站登录,我有没有办法阻止他们登录我的网站?我正在考虑使用PHP来实现这一点。如果您能分享php示例代码,我们将不胜感激 提前感谢。有很多解决方案,首先是使用CSRF保护。这种技术通常会在表单中插入某种随机令牌,如果该令牌是意外的,则拒绝处理请求 其他方法是使用HTTP\u REFERER,但这可能会被欺骗,因此它

我想阻止我的用户从其他网站登录

如果他们在他们的网站上使用与我相同的登录表单,并将我的网站url置于其表单的活动属性中,他们可以登录我的网站,因为我没有放置任何证券

如果他们试图从外部网站登录,我有没有办法阻止他们登录我的网站?我正在考虑使用PHP来实现这一点。如果您能分享php示例代码,我们将不胜感激


提前感谢。

有很多解决方案,首先是使用CSRF保护。这种技术通常会在表单中插入某种随机令牌,如果该令牌是意外的,则拒绝处理请求


其他方法是使用HTTP\u REFERER,但这可能会被欺骗,因此它无法停止通过脚本远程调用HTTP请求,但肯定会停止简单的表单提交…

您所描述的是防止跨站点请求伪造(CSRF)。OWASP有一篇关于它的好文章。对此的基本保护措施是在表单中包含一个服务器端生成的令牌,该令牌与表单的其余数据一起提交,以便可以在服务器端验证请求。

如果他们在
foo.com
上填写表单登录到
bar.com
,那又有什么关系呢,如果最终结果是,他们将登录到您的网站开始?如果他们有有效的用户名/密码,那么他们从哪里登录又有什么关系?他们仍然会登录。@MarcB重要的是,如果您使用CSRF正确地执行此操作,那么您可以防止跨站点提交,而跨站点提交可以使用脚本自动进行,该脚本通过向站点钓鱼来记录用户名和密码。如果到目前为止,该网站正在使用钓鱼,那么显然有必要这样做。@MathieuDumoulin Phishing*除非它是一个钓鱼游戏网站。为什么出于好奇而关闭这个问题?当然没有代码,但不是所有的问题都必须有代码,他在寻找CSRF,不知道怎么称呼它,这是一个非常有效的问题@MathieuDumoulin我同意,这是一个关于OP担忧的有效问题。可能有重复的(我还没查过),但到目前为止没有一个接近的原因表明这一点。谢谢,马修。我很快就查到了CSRF。他们有一个示例代码…我觉得这个也不行。因为人们可以看到隐藏的输入值。他们可以使其登录完全相同。你能给我看一个示例代码吗?你必须使用CSRF库,令牌本身总是变化的,它存储在用户的会话中。因此,如果此人从未在您的站点上打开过会话,则令牌从未生成。。。如果他们连接到站点,您将生成一个令牌,将其保存到会话并在表单中打印。提交表单时,比较会话和表单是否匹配?好的,继续!不匹配?此人可能没有正确使用您的网站!谢谢,马修。该会话何时生成?我的理论是,无论何时生成会话,从外部站点访问的用户都可以模拟会话。因为一旦他们点击提交按钮,他们就会调用与我相同的url。因此,无论在我的域下发生什么,都将与外部访问相同。不,您混淆了会话和应用程序登录机制。。。如果在PHP.ini中激活了session_auto_start,则session会由PHP自动启动,而这是很少见的。通常情况下,您需要使用会话启动自己。然后,此人将收到一个COOKIE,以标识其在您的站点上的会话。当您向用户显示表单时,您将生成一个存储的值。远程脚本无法获取此值,因为它没有与您站点上的用户相同的会话ID。因此,它必须连接到站点,获取登录页面,然后刮取令牌的结果,将其保存在内存中,尝试捕获用户,获取creds,为其提交creds,然后验证将creds保存在数据库中是否有效。这是一些严重的黑客企图,大多数时候都不值得。