通过URL或POST变量传递值?

时间:2012-11-21 01:00:50

标签: php session post

我正在实现一个消息系统(私人消息,如果你愿意的话),我希望能够通过文本链接显示用户拥有的消息列表,所以我不需要一个按钮来打开它。 message_id(数据库中的唯一值)将通过URL传递。 (比如www.example.com/message/view/16)。假设我检查以确保用户标识的会话与发送消息的用户标识匹配,这样可以吗?为了使它更安全,我可以添加一个随机数并将其设置为会话,然后在查看时检查它。

我是否应该忘记这个想法并坚持使用提交按钮来查看消息?

2 个答案:

答案 0 :(得分:4)

POST请求不会提供比GET请求更多的安全性:任何半好的Web调试工具都可以伪造POST请求。您应该完全不相信用户输入的数据。始终仔细检查授权以确保安全!

那就是GET request semantics match what you're trying to do here

HTTP标准规定GET请求应该是可重复的,没有任何重要的后果。例如,使用GET请求查看数据就足够了(并且可能做一些小事情,比如递增一个计数器,因为这些都是非常微不足道的结果)。实际上,GETHEAD是两种被认为是“安全”的请求方法。

另一方面,POST请求预计会产生非平凡的后果,例如发送消息或下订单。你不想意外地执行两次的东西。如今大多数浏览器都会通过在重新加载页面时警告用户会导致再次执行POST请求来尊重这一点。

答案 1 :(得分:1)

使用GET值来查看消息要好得多,因为假设用户保持登录状态,它将允许他们为消息添加书签等。