2010-10-23 66 views
1

我在理解以下情形的安全问题时遇到问题。 我有一个网站,有用户注册,他们可以通过登录创建事件。如果我以用户身份登录,我在像http://abc.com/index.php?page=edit&pageid=45网址。我看到这个页面的其他登录后聪明,它会显示在日志中记录screen..but后,如果我改变从 http://abc.com/index.php?page=edit&pageid=45 网址 http://abc.com/index.php?page=edit&pageid=567如何处理url修改php/mysql

我能够编辑page..which是一个安全问题。如何处理这个?有没有一种最好的方式来处理URL中的任何编辑?请指导我。或者我怎样才能通过脚本来处理这个问题......通过检查诸如用户名之类的东西以及它与页面标识的关联?

请指导我。

我在想,像不在URL中显示pageid变量,并以某种方式将它从页面1隐藏到页面2 ..但我不知道如何完全做到这一点,或者如果它是一个很好的解决方案。

问候

回答

1

我认为它的罚款通过了url中的pageid。所以接下来的事情是,确保用户只能编辑他们的页面。我会做的是将事件保存在表中的用户ID。

然后在编辑页面上,当你的事件的信息,你可以从登录的人的用户ID检查用户ID(从表中)。

像这样的事情

// I don't know how your query works, but it would go here. 

// Then before you output the edit form, Add something like this 
if($_SESSION['user_id'] == $event_result['user_id']) { 
    // They match, show the form 
}else { 
    // they don't match 
    echo 'Excuse me, what are you doing?'; 
} 
+0

谢谢。我试过你说的话,它看起来很好。再次感谢。 – geej 2010-10-24 02:59:05

1

一种可能性是设置和使用$ _SESSION变量,以确定是否允许用户访问某个页面。另一种可能性是使用发布而不是获取您的登录表单。让我知道我是否可以详细说明。

编辑:

<form method="get" action="login.php" name="form"></form> 

VS

<form method="post" action="login.php" name="form"></form> 

登录后,可以设置

<?php $_SESSION['user_id'] ?> 

,并在您使用的页面的顶部,你可以有一个说法像

<?php if($_SESSION['user_id'] != $_POST['pageid']{//not valid} ?> 
+0

喜感谢Brandon的快速回复。你可以请我gudie我的登录表单中的选项?这是用户可以做的。 1)去现场。 2)点击我的帐户并登录。3)向他显示他/她创建的活动列表。 4)每个事件都可以选择a)编辑。 2)删除c)邮件吧!所以无论他们点击了什么,我都有事件ID和/或URL中的日期。所以用户a已经登录,如果他只是更改了url中的id,他可以编辑用户b的事件......并按照邮件/删除选项执行相同操作。请帮帮我。 – geej 2010-10-23 23:49:33

+0

使用POST而不是GET不会有多大帮助。任何自尊自爱的黑客都可以触发POST请求。 – kijin 2010-10-23 23:51:20

+0

那么有什么选择?将网址重写有帮助? – geej 2010-10-23 23:52:51