0

我创建了一个简单的脚本,允许用户在我的网站上发布消息、问题或讨论。我还没有网上任何东西,所以我不能给你看,但我不想要的一件事是注册。

我想要一种简单、精简和快速的方式,让任何人都可以访问我的网站并发布消息,其他人可以回复(也无需注册)。

我的问题是关于安全的。我这样做是为了让一个人只有在满足以下条件时才能编辑自己的消息:

  1. IP 地址($_SERVER['REMOTE_ADDR'])与用于提问的 IP 地址相匹配(我将其存储在数据库中)。
  2. 时间不超过 20 分钟。

我想知道这将是多么容易打破,以及我怎样才能使它变得更强大。谈到安全性,我绝对是个新手,我现在声明我对这方面的开发没有真正的兴趣,我更像是一个客户端/服务器开发人员,但我的强项是 JavaScript。

我也不太了解网络。欺骗 IP 地址有多容易,找到两个具有相同地址的用户有多普遍?我正在考虑制作一个会话 ID,它将作为第三个子句存储在临时数据库中,该子句必须存在才能进行编辑。当然,这意味着用户将无法离开网站并返回编辑。

谁能给我一些关于最好的方法的建议?

注意:我想明确表示我绝对不想要注册,这将完全消除这个问题。我想要一个免费使用的公共站点,任何人都可以简单地使用它。

注意 2:我还通过一段简单的 JavaScript 解决了机器人问题,要求用户与网站进行交互(比 CAPTCHA 更快),所以这里不用担心。

亲切的问候。

4

4 回答 4

2

恕我直言:

使用连接到同一路由器的两台计算机的两个用户将无法通过检查,因为从 PHP 脚本的角度来看,这两个用户将具有相同的外部 IP。

 __________         __________
| ________ |       | ________ |
||        ||       ||        ||
||________||       ||________||
|__________|       |__________|
     /\                 /\
    ----               ----
192.168.1.101      192.168.1.102

      |                 |
       \               /
        \             /
         \           /
          \         /
           \       /
            \     /
         ____________
        |            |   137.204.xxx.xxx <- This is what you see in your script
        |   ROUTER   |  -----------------  Internet
        |____________|

但是当大量垃圾邮件发送者来到您的网站并且...您知道会发生什么时,我会更加担心。

PS 垃圾邮件发送者不是必需的机器人,很多实际上是为了完成这项工作而获得报酬。

于 2012-10-18T16:44:26.053 回答
1

我认为处理此问题的更好方法是生成唯一的会话 ID 并将其存储一段时间(在您的情况下为 20 分钟)。如果您将多台计算机连接到同一路由器,您的方法将不起作用,因为($_SERVER['REMOTE_ADDR'])实际上会返回路由器 IP 地址。这可能失败的另一种可能情况是,如果他们的路由器跳跃 IP 地址,那么该人将无法编辑他们的帖子。我承认这是一个非常不可能的情况,但是嘿,你永远不知道。

您可以通过许多不同的方式生成唯一的会话 ID。一种方法是

session_start()
if (!isset($_SESSION['uniqueID'])){
   $_SESSION['uniqeID'] = uniqid(mt_rand(), true);
}

您可以将所有唯一 ID 存储在服务器上 20 分钟,当用户想要做某事时,您可以对照此列表进行检查。这是一种相当复杂的方式。你可以只使用cookies。另外我建议您在一段时间内限制每人的帖子数量。否则垃圾邮件发送者会对您的帖子板造成严重破坏。

于 2012-10-18T16:50:31.483 回答
1

AFAIK 您的方法是正确的,您可以将其与 cookie 结合使用,以避免同一 ip 上的多用户问题(当然在您的网站上说明这一点)。

于 2012-10-18T16:43:42.553 回答
1

欺骗 IP 地址很容易,但我认为这不会是您的大问题

问题是,如果多个用户位于同一路由器后面,他们可能会从同一外部 IP 地址发帖。当我的兄弟和我注册同一个论坛时,我遇到了这个问题。我听说有人在上同一所大学的人被禁止 IP 时对 SO 本身有问题。

您最好的选择是创建一个 cookie,$_SESSION以便您可以跟踪单个用户。

于 2012-10-18T16:44:39.750 回答