【问题标题】:HTML/PHP --> parameter via url (GET) --> How to encode with less effortHTML/PHP --> 通过 url (GET) 参数 --> 如何以更少的努力进行编码
【发布时间】:2018-01-19 18:24:16
【问题描述】:

我为项目管理编写了一个 PHP/Mysql 应用程序。 不幸的是(由于我的程序员初学者状态)所有用于打开输入表单(用于编辑多个数据)的按钮都通过 URL 发送参数。

例如如果用户按下“EDIT PROJECT”按钮,则调用链接edit_project.php?project_id=12345&mode=edit。 这意味着edit_project.php 页面通过$_GET 接收它的参数。

如果只有这一个页面和一个按钮,那么更改脚本将不费吹灰之力。

但我有数百个按钮和许多页面都在用这种肮脏的 GET 方式进行通信。

问题:如果我不更改脚本,用户可以手动操作 URL 参数。

所以这是我的问题: 有没有人有技巧/提示如何以尽可能少的努力解决我的问题?有没有办法通常限制 URL 参数操作?

【问题讨论】:

  • 不幸的是,艰苦的课程很少有简单的解决方案。可能需要更少的时间来处理所有文件,正确编写它们以及任何“简单”的解决方案,特别是当你考虑你需要多少时间时将花费修复当前代码中出现的问题。
  • "如果我不更改脚本,用户可以手动操作 URL 参数。" — 用户可以始终手动操作浏览器发送到您的服务器的任何数据。

标签: php mysql url get


【解决方案1】:

您无法阻止用户向您发送他们喜欢的任何 GET 或 POST。

无论如何,用户发送给您的任何内容都应在服务器端进行验证。
尤其是在您处理用户权限和权限的情况下。

用户真的发送了一个号码吗?他是否拥有编辑该内容所需的权限? -等等。

这确实应该是用户而不是使用按钮的情况,因为它比学习链接参数和可能的组合更容易。

如果他们拥有所有权利并且更喜欢编辑 URL 而不是点击按钮 - 为什么不让他们呢?

【讨论】:

    【解决方案2】:

    我们无法阻止用户操作 URL。

    但是,您可以检查project_id 是否属于用户并采取相应措施。

    $query = $mysqli->query("SELECT * FROM projects WHERE project_id='123'AND user_id='5'");
    if(!$query){ 
      // if project is not found with project_id=123 and user_id=5
      // Redirect to a 404 page or something
      header("Location: 404.php");
      // if project belongs to the user and a record is found, script will continue
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 2020-07-12
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      相关资源
      最近更新 更多