6

我需要一种以安全方式在两个页面之间传递变量的方法。

我知道我可以使用 POST / GET / Cookie / Session 或隐藏字段,但我认为这些方式都不够安全,因为:

get 可以在 url 中看到
cookies 是一个客户端,因此它可以从客户端
会话中更改,可以对抗 Session ID 劫持和...

现在我想知道有没有比这些方法更好的方法,如果没有这些方法,是安全传递变量的最佳方法;

4

4 回答 4

11

会话是您可用的最安全的方法。

会话 id 重新生成将有助于防止会话劫持,但通过 https 的 SSL 将真正防止它。

顺便说一句:如果会话被劫持并且您正在向客户端显示用户数据,那么无论您如何将数据带到第二页,劫持者都会看到它。如果您仅在服务器端使用它,则劫机者将看不到它。

于 2012-10-30T15:18:00.817 回答
3

使用会话在页面之间传递变量值是最安全的

session_regenerate_id并在安全级别更改(例如登录)时重新生成会话 ID 。如果您愿意,您甚至可以在每个请求中重新生成会话 ID。

好读

PHP 安全指南:会话

于 2012-10-30T15:18:15.323 回答
1

由于会话是服务器端,它是传递变量和防止会话劫持的最安全方法,您可以在 php 手册中使用 session_regenerate_id 函数:http: //php.net/manual/en/function.session-regenerate-id。 php

但这并不意味着您总是使用会话来传递变量,您仍然可以使用 cookie,但在将数据存储到 cookie 之前对其进行加密。

于 2012-10-30T15:40:17.083 回答
0

使用 GET 没有任何问题 - 只要它们被正确清理......你总是可以将 get 与参数的哈希结合起来以降低它被篡改的风险,同时使用会话来确保它们也是合法的.

于 2012-10-30T15:19:48.433 回答