我应该在url中隐藏查询字符串

时间:2013-06-24 14:35:01

标签: php mysql security

我的许多页面是使用$ _Get从MySQL中提取的结果生成的。这意味着网址会像/park.php?park_id=1一样结束。这是一个安全问题,是否最好从URL隐藏查询字符串?如果是这样我该如何去做呢?

此外,我在某处读过谷歌没有使用?索引网址,这将是一个问题,因为这些是我网站的主要页面。这有什么道理吗?

由于

2 个答案:

答案 0 :(得分:5)

如果这是敏感信息,那么这只是一个安全问题。例如,您将用户发送到此URL:

/park.php?park_id=1

现在,用户知道当前正在查看的公园的系统标识符为" 1"在数据库中。如果用户随后手动请求该怎么办?:

/park.php?park_id=2

他们是否危及您的安全?如果他们不允许查看公园ID 2,则此请求应该适当地失败。但这是一个问题吗?他们碰巧知道的ID是1还是2?

在任何一种情况下,所有用户正在做的是提出请求。服务器端代码负责适当地处理该请求。如果不允许用户查看该数据,则拒绝该请求。不要试图阻止用户制作请求,因为他们总能找到方法。 (他们可以手动输入。即使没有首先访问过您的网站。)安全性是在响应请求时发生的,而不是在制作时。

有些数据不允许知道。但ID可能不是那些数据。 (或者至少不应该这样,因为数字ID很容易猜到。)

答案 1 :(得分:2)

不,这绝对没有道理。

来自客户端的任何数据都会受到欺骗。无论是在查询字符串中,还是在POST表单或URL中。就这么简单......

至于“Google不会使用?索引网址”,谁曾告诉过你,他们不知道他们在谈论什么。有“SEO”最佳实践,但它们与“谷歌没有索引”无关。它比这更精细。是的,谷歌会为你做好准备。

@David确实显示了在URL中使用标识符的一个潜在问题。实际上,这有一个非常具体的名称:A4: Insecure Direct Object Reference

请注意,使用ID的 不是。这是您需要授权用户输入URL。因此,通过您向用户显示的链接执行权限操作 BAD 。但是,如果您在点击URL时也授权它们,那么您应该没问题。

所以不,简而言之,你很好。你可以选择“漂亮的网址”,但不要因为你在这里张贴的任何内容而感到不得不......