【问题标题】:Working with $_GET使用 $_GET
【发布时间】:2012-12-15 22:51:33
【问题描述】:

您好,首先从美国向世界各地的每一个人致以新年快乐。我今天已经阅读了很多关于 $_GET 的内容,以及它的作用以及在我的系统中实现它的用处。

进入正题:

我有一个跟踪学生的系统。然后,所述系统将能够允许大学的辅导员专门与学生一起工作,在辅导员为学生所做的工作中添加 cmets。 -> 现在我的意思是,如果辅导员接受学生,则创建会话(不是 php 会话,而是学生和工作人员“辅导员”之间的实际会话)

我的特定系统需要从 url 中获取 meeting_id。所以网址会像这样:localhost/student.php?id=1 or 2 or 3 or 4 (等等)

根据我的理解,使用 $_GET : 我可以获取特定的 url id(例如:localhost/student.php?id=1)并使用 $_GET['id'] 来更新数据库表中的特定行。

我的问题是:

我对 $_GET 的理解合法吗?我将使用会话,我将在我系统的所有页面上启用 SSL(或者如果你想调用它,则为 Intranet)。我将使用 PDO 从我的数据库表中更新/写入/选择。我想知道这是否是实现 $_GET 的正确方法以及是否安全。

Reading these answers / comments make me hesitant to go on with this logic. 但是对于 $_GET 的这种特定用法,实现这个逻辑是否是一种好习惯?

【问题讨论】:

    标签: php mysql security pdo get


    【解决方案1】:

    $_GET 方法和其他方法一样安全。当你得到它时,你用它做的事情使它变得不安全。只需确保在数据库查询中使用 $_Get 之前以某种方式对其进行验证。例如,如果您知道 id 将是一个整数并且您知道最大长度可以是多少,请在使用它之前检查这些内容。

    【讨论】:

      【解决方案2】:

      使用 $_GET['id'] 更新数据库表中的特定行。

      永远不会想使用 $_GET 对数据库进行任何更改,只能选择。 $_GET 可能会被添加到书签并在不经意间再次使用。

      这样想。如果您希望能够为某些东西添加书签,例如某个顾问制作的 cmets,那么 $_GET 是完美的。

      如果您要对要使用 $_POST 的数据库进行更改。当然,您仍然不能信任用户,您需要确保他们已通过身份验证,并且您需要清除任何传入数据。如果您使用的是 PDO,请确保在查询语句中绑定数据

      【讨论】:

      • 当然是@PDO部分。我将继续阅读有关 $_GET 的内容。谢谢!
      【解决方案3】:

      当使用 $_GET 方法时,传递的变量将在 url 中可见。由于您正在构建一个包含重要数据的站点,因此最好使用 $_POST 以便变量名称和值不可见。还要彻底验证所有用户输入字段。

      【讨论】:

      • 由于 $_GET 变量在 URL 中可见,用户可以更改 URL 以更改提取的变量。所以就像 Arunu 说的,你可能想使用 $_POST
      • 好吧,我想我对此的了解还不够。据我了解(如果有错误请纠正我)在这种情况下传递的变量是 .php?meeting_id=1?这只是我在表中使用的通用主键,只是为了在辅导员和学生之间进行独特的会话。这是必须保护的变量吗?
      • $_POST 在这方面并不安全。所有数据仍包含在标头信息中。欺骗数据稍微难一些。
      猜你喜欢
      • 2018-08-18
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多