2010-01-29 128 views
1

我想检查用户是否有登录,所以我分配一个隐藏的字段来存储会话密钥,并且我有一个提交方法表单。安全问题关于隐藏字段

其他人/黑客可以从我的字段复制我的会话密钥,并发送post方法到服务器?如果是的话,我该怎么做才能避免这种情况?

+0

我不得不承认我不确定答案,但听起来不是一个好主意。 – 2010-01-29 12:24:02

+1

你能指定你使用的是什么技术吗? (ASP.NET,PHP等)其中大多数人都有办法读取服务器端会话中存储的内容,而不必在html页面上显示密钥。 – 2010-01-29 12:27:36

回答

0

是的,从其他地方复制和重新发送密钥可以轻松完成。

诀窍是确保会话密钥只在有限的时间内有效,并且不能轻易地从表单中的其他数据推导出来。

你可能会使用良好的加密方法将用户名,IP地址和时间编码为会话密钥。解码功能,键将允许您验证用户,系统和时间..不完全是傻瓜证明还是......

这将限制但不能消除风险

1

其他/黑客可以从我的字段复制我的会话密钥,并发送post方法到服务器?

是的。

如果要将证书泄漏的风险降至最低,请使用加密(SSL(HTTPS))。

+0

这不会保护他免受访问本地机器的人。但是我明白,这是明显的第一步,所以+1 – lexu 2010-01-29 13:00:32

+0

如果某人有权访问本地计算机,那么根本没有安全性。 – Quentin 2010-01-29 22:04:41

0

您应该使用服务器端语言来检查会话密钥。它会更安全。

将它作为隐藏值存在一些问题。 1)用户可以保存表格,然后更改该值并尝试劫持另一个会话 2)您可以让一个男人处于中间状态,在那里某人正在侦听要提交的表单,然后在那里劫持会话...

+0

没有人建议使用服务器端语言以外的任何其他语言来检查密钥。 (1)用户可以**总是**尝试猜测另一个会话密钥,而不管你存储在哪里。 (2)是的,但密钥的存储位置并不重要,只有如何传输。 – Quentin 2010-01-29 12:47:28

0

您可以使用讨论here的哈希和时间戳,但大多数Web开发框架提供了某种内置的身份验证机制。