非注册提交,安全问题

时间:2012-10-18 16:39:58

标签: php security

我创建了一个简单的脚本,允许用户在我的网站上发布消息,问题或讨论。我还没有上网,所以我无法告诉你,但有一点我不想要注册。

我想要一个简单,简化和快捷的方式让任何人进入我的网站并发布消息,其他人可以回复(也没有注册)。

我的问题是关于安全问题。我已经做到了这样,只有满足以下条件,一个人才可以编辑自己的信息:

  1. IP地址($_SERVER['REMOTE_ADDR'])与用于提问的地址相匹配(我将其存储在数据库中)。
  2. 时间不超过20分钟。
  3. 我想知道破坏是多么容易,以及如何让它变得更强大。在安全性方面,我是一个绝对的新手,我现在说我对开发的这一方没有兴趣,我更像是一个客户端/服务器开发人员,但我的优点是JavaScript。

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

    有人可以就最佳方式向我提出一些建议吗?

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

    注2:我还用一段简单的JavaScript来处理机器人问题,需要用户与网站进行交互(比CAPTCHA更快),所以不用担心。

    亲切的问候。

4 个答案:

答案 0 :(得分:2)

<强> IMHO:

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

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

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

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

P.S。垃圾邮件发送者必要的机器人,很多实际上得到报酬来完成这项工作。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

非常很容易欺骗IP地址,但我认为这不是你的大问题。

问题是,如果多个用户位于同一路由器后面,则可能会从同一外部IP地址发布。当我的兄弟和我报名参加同一个论坛时,我遇到了这个问题。当有人去同一所大学时,我听说有人在SO上遇到问题。

您最好的选择是通过$_SESSION创建Cookie,以便跟踪个人用户。

答案 3 :(得分:1)

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

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

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

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