我创建了一个简单的脚本,允许用户在我的网站上发布消息,问题或讨论。我还没有上网,所以我无法告诉你,但有一点我不想要注册。
我想要一个简单,简化和快捷的方式让任何人进入我的网站并发布消息,其他人可以回复(也没有注册)。
我的问题是关于安全问题。我已经做到了这样,只有满足以下条件,一个人才可以编辑自己的信息:
($_SERVER['REMOTE_ADDR'])
与用于提问的地址相匹配(我将其存储在数据库中)。我想知道破坏是多么容易,以及如何让它变得更强大。在安全性方面,我是一个绝对的新手,我现在说我对开发的这一方没有兴趣,我更像是一个客户端/服务器开发人员,但我的优点是JavaScript。
我也不太熟悉网络。欺骗IP地址有多容易,找到两个地址相同的用户有多常见?我正在考虑创建一个会话ID,该会话ID将作为第三个子句存储在临时数据库中,该子句必须存在才能进行编辑。当然,这意味着用户将无法离开网站并返回进行编辑。
有人可以就最佳方式向我提出一些建议吗?
注意:我想明确表示我绝对不希望注册,这将完全消除这个问题。我想要一个免费使用的公共网站,任何人都可以简单地使用。
注2:我还用一段简单的JavaScript来处理机器人问题,需要用户与网站进行交互(比CAPTCHA更快),所以不用担心。
亲切的问候。
答案 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。另外,我建议你在一段时间内限制每个人的帖子数量。否则垃圾邮件发送者会破坏你的邮局。