【发布时间】:2023-03-03 19:13:01
【问题描述】:
我有一个这样的网址(您需要登录才能看到): https://www.example.com/form.php?id=268
form.php 供用户更新特定数据库条目的详细信息(在本例中为 id 268)
应用程序基本上获取 id 号,对其进行验证和清理,运行 mysql 查询,然后用查询结果填写表单。
在查询中,我使用来自 url 的 id 以及在登录时设置的会话变量 $_SESSION['company_id']。这意味着如果用户手动将 url 更改为(例如)?id=269,他/她将只能在 company_id 与 session 变量中设置的 company_id 匹配的情况下看到 id 269 的详细信息。
我相信 url id 会正常/安全,但 session 变量让我担心。在运行 mysql 查询之前,我没有对会话变量执行任何 IP 或用户代理检查,这让我感觉有点暴露。所以...
- 您认为我应该加密 $_SESSION['company_id'] 以提高安全性吗?
- 您认为是否值得在运行前运行用户代理检查 查询?这会增加任何安全价值吗?
--
更新
已重写问题和标题以尝试更具体
【问题讨论】:
-
您的第一个大禁忌是生成这样的 SQL 查询;你向injection attacks敞开心扉。使用prepared statements。
-
您还需要清理和验证输入。在这种情况下,应该很容易确保 ID 是有效的 int。
-
我转义了 get $id = mysqli_real_escape_string($link, $_GET['id']) 这有帮助
-
这不是一个真正适合 SO 的问题;你基本上是在问“向我建议一些安全技术”......
-
干杯奥利 - 可以明白你的意思。会考虑改写。
标签: php database security session web-applications