【问题标题】:how to handle url modifications php/mysql如何处理 url 修改 php/mysql
【发布时间】:2010-10-23 23:39:11
【问题描述】:

我在理解以下场景的安全问题时遇到了问题。 我有一个有用户注册的网站,他们可以通过登录来创建事件。如果我以用户身份登录并且我在一个类似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

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

请指导我。

我在想一些事情,比如不在 url 中显示 pageid 变量,并以某种方式将它作为隐藏从第 1 页传递到第 2 页..但我不知道如何准确地做到这一点,或者它是否是一个好的解决方案。

问候

【问题讨论】:

    标签: php mysql security url


    【解决方案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?';
    }
    

    【讨论】:

    • 谢谢。我试过你说的,看起来效果很好。再次感谢。
    【解决方案2】:

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

    编辑:

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

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

    登录后可以设置

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

    在你使用的页面顶部,你可以有这样的声明

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

    【讨论】:

    • 嗨,感谢布兰登的快速回复。你能告诉我登录表单中的帖子选项吗?这是用户可以做的。 1)去现场。 2)单击我的帐户并登录。 3)向他显示他/她创建的事件列表。 4) 每个事件都有一个 a) 编辑选项。 2) 删除 c) 邮寄!所以无论他们点击什么,我都有事件 ID 和/或 url 中的日期。因此用户 a 已登录,如果他只是更改 url 中的 id,他可以编辑用户 b 的事件..并对邮件/删除选项执行相同操作。请帮帮我。
    • 使用 POST 代替 GET 并没有多大帮助。任何有自尊的黑客都可以发出 POST 请求。
    • 那么有什么选择呢? url重写有帮助吗?
    • 是的,正要说这不是真正的方法。您还需要实现某种会话令牌进行身份验证。我会在上面添加一些东西
    • 再次感谢布兰登..但在我的情况下,我在用户帐户中显示这些“编辑/删除/邮件”选项..所以当他们点击它时,他们可以编辑 url 中的 id ..所以这里没有表单操作?我错过了一些东西。 ex - 用户登录后,他/她将看到 1) 标题 - 日期 - 描述 --- 编辑 |删除 |邮件..列表是这样的。
    猜你喜欢
    • 2016-04-28
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多