【问题标题】:url Query and Securityurl查询与安全
【发布时间】:2010-05-01 06:30:18
【问题描述】:

在带有 id 的 url 查询中,我使用 is_numeric($_GET['id']) 来解决安全问题。但是在查询例如类别名称时,urlencode() 是一种正确的安全方式吗? 提前致谢。

【问题讨论】:

  • 没有参数茉莉............
  • mysql_real_escape_string() 对于文件系统没有用处。不是吗?它不是论点;)

标签: php security sql-injection


【解决方案1】:

不,urlencode 用于使字符串采用 URL 编码形式。

与数字 ID 不同,没有一种单一的方法可以清理字符串输入值。您需要使用什么方法取决于您要对类别名称做什么。

例如:

  • 如果您想在查询中使用它,请至少在其上运行 mysql_real_escape_string() 或(更好)使用支持参数化查询的数据库类(如 PDO)。通过参数化查询,PDO 将负责安全地清理任何传入参数。

  • 如果要在页面上输出,需要在输出前在其上运行htmlentities(),以防止HTML代码的注入。

在将类别名称用作文件名、将其用作 URL 的一部分等等时,还需要注意其他事项。

【讨论】:

  • index.php?page=blahblah index.php?page=stackoverflow.com/questions/2749108/urlquey-and-security 怎么样?我只想将数据库项目打印到屏幕上。
  • @jasmine 如果要包含page 中指定的文件,则需要格外小心。见stackoverflow.com/questions/1799384/…
  • @pekka;我知道这一点,但我不想包含一个页面。这是一个简单的查询: $page = urlencode($_GET['page']); $sql = sprintf('SELECT * FROM table WHERE name = %s', mysql_real_escape_string($page)); $page 不是数字。
  • @jasmine 我明白了。不要将urlencode 用于传入数据;否则这个查询应该是好的和安全的。
  • 我问这个问题 pekka,如何使用 url 查询安全?感谢您的帮助
猜你喜欢
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多