如何处理url修改php / mysql

时间:2010-10-23 23:39:11

标签: php mysql security url

我在使用以下方案了解安全问题时遇到问题。 我有一个用户注册的站点,他们可以通过登录创建事件。如果我以用户身份登录,并且我在http://abc.com/index.php?page=edit&pageid=45这样的网址中。我在登录后看到此页面,它将显示登录屏幕..但登录后如果我更改了网址 http://abc.com/index.php?page=edit&pageid=45http://abc.com/index.php?page=edit&pageid=567

我可以编辑该页面..这是一个安全问题。怎么处理这个?有没有最好的方法来处理网址中的任何编辑?请指导我。或者我如何通过脚本来处理这个...通过检查用户名和它与页面ID的关联之类的东西?

请指导我。

我想的是没有在网址中显示pageid变量,并以某种方式将其从第1页隐藏到第2页。但我不知道如何准确地执行此操作或者它是否是一个很好的解决方案。

问候

2 个答案:

答案 0 :(得分:1)

一种可能性是设置并使用$ _SESSION变量来确定是否允许用户访问某个页面。另一种可能性是使用post而不是get来登录表单。如果我能详细说明,请告诉我。

编辑:

<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} ?>

答案 1 :(得分:1)

我认为在网址中传递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?';
}