我想检查用户是否有登录,所以我分配一个隐藏的字段来存储会话密钥,并且我有一个提交方法表单。安全问题关于隐藏字段
其他人/黑客可以从我的字段复制我的会话密钥,并发送post方法到服务器?如果是的话,我该怎么做才能避免这种情况?
我想检查用户是否有登录,所以我分配一个隐藏的字段来存储会话密钥,并且我有一个提交方法表单。安全问题关于隐藏字段
其他人/黑客可以从我的字段复制我的会话密钥,并发送post方法到服务器?如果是的话,我该怎么做才能避免这种情况?
是的,从其他地方复制和重新发送密钥可以轻松完成。
诀窍是确保会话密钥只在有限的时间内有效,并且不能轻易地从表单中的其他数据推导出来。
你可能会使用良好的加密方法将用户名,IP地址和时间编码为会话密钥。解码功能,键将允许您验证用户,系统和时间..不完全是傻瓜证明还是......
这将限制但不能消除风险
您应该使用服务器端语言来检查会话密钥。它会更安全。
将它作为隐藏值存在一些问题。 1)用户可以保存表格,然后更改该值并尝试劫持另一个会话 2)您可以让一个男人处于中间状态,在那里某人正在侦听要提交的表单,然后在那里劫持会话...
没有人建议使用服务器端语言以外的任何其他语言来检查密钥。 (1)用户可以**总是**尝试猜测另一个会话密钥,而不管你存储在哪里。 (2)是的,但密钥的存储位置并不重要,只有如何传输。 – Quentin 2010-01-29 12:47:28
您可以使用讨论here的哈希和时间戳,但大多数Web开发框架提供了某种内置的身份验证机制。
我不得不承认我不确定答案,但听起来不是一个好主意。 – 2010-01-29 12:24:02
你能指定你使用的是什么技术吗? (ASP.NET,PHP等)其中大多数人都有办法读取服务器端会话中存储的内容,而不必在html页面上显示密钥。 – 2010-01-29 12:27:36