【问题标题】:Blocking remote access through PHP通过 PHP 阻止远程访问
【发布时间】:2012-06-26 09:34:47
【问题描述】:

解决这个问题;我不经常做 php 或数据库编程,所以我只是想在当前的项目中格外小心。

所以基本上,我有一个由数据库驱动的站点,并且我有一些使用“post”方法将行插入 行到数据库中的 Jquery 代码。一开始我就开始考虑安全问题,因为人们看不到我的 php,但可以看到我的 Javascript。完成系统设置后,我进行了测试并运行 jquery 会插入信息,即使我在远程源上……这显然会导致可能的重大安全问题。所以像我一样不成熟,我只想知道我应该如何防止这种情况并更好地保护系统?

还有...请不要侮辱我或无礼...我知道我可能很愚蠢或其他什么,但我只是想学习!

【问题讨论】:

  • 我相信我们都愿意提供帮助,但为此,您需要让您的问题更清楚
  • 你能定义远程吗?另一台机器?另一个 IP 地址?
  • remote access 实际上是什么?您的网站是否有某种用户验证?否则,您的网站将成为僵尸
  • 您是否有任何登录系统或任何人都可以访问并在您的数据库中插入行?
  • 对不起,对不起。我有一个托管该站点的服务器,通过远程,我从我自己的测试服务器上运行了脚本,它成功地插入了信息。脚本本身就是 SIGN UP 功能,所以我无法通过登录系统阻止访问...

标签: php javascript jquery mysql post


【解决方案1】:

这是 Cross Site Request Forgery (CSRF) 和 same origin policy sandbox 旨在防止的。

从另一个角度来看,您如何阻止某人在他们的网站上编写表单并将其作为 POST 请求提交到您的脚本以添加垃圾记录?

通常,CSRF 保护由您的框架提供。如果你想直接用 PHP 来实现,那是相当简单的。

  1. 从您的服务器代码生成一个唯一令牌,并将其添加到会话中。
  2. 将其作为隐藏字段嵌入到表单中。
  3. 在接受表单的脚本上,检查此隐藏字段是否存在。

如果该字段存在,则将其与会话中的内容进行匹配,如果它们匹配 - 那么这是一个合法请求。

如果它们不匹配(或缺少该字段),则它是一个远程请求,您可以拒绝它。

This page 提供了一些 PHP 代码来实现上述功能。

完成此操作后,您需要确保 jquery 脚本可以以相同的方式进行身份验证。 This snippet 详细介绍了在 jquery 中实现相同技术的步骤。

【讨论】:

  • 谢谢,非常感谢!这正是我要问的,并且拥有我需要的一切! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2013-11-07
  • 2011-02-10
  • 2022-11-28
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多