我正在开发一个当前使用Session来保存用户ID和权限的Web应用程序。这对我造成了问题,因为客户端IP地址每5分钟正常更改一次,有时更快,因此会话丢失。
我目前的工作是加密字符串会在会话终止时自动登录,但它仍然会导致问题,因为如果必须运行自动登录过程,则不会提交表单。
我可以发布一些代码,但我觉得我已经远离了我当前的攻击方法。我可以请一些建议吗?
谢谢!
网络应用程序适用于大约10个用户,如果可能的话,我希望它永远不会超时,这样如果他们查看页面4天并回到它,他们可以按提交并提交。
答案 0 :(得分:1)
如果您需要页面保持有效四天,请不要使用会话,也不要使用Viewstate。您可以将数据存储在cookie中,隐藏输入字段和URL查询字符串中的页面上。在这段时间内,没有其他任何东西可靠。如果您要存储敏感或安全相关信息,请负责任地执行,这可能是它自己的问题。
答案 1 :(得分:1)
我不确定为什么你会在5分钟后丢失会话,或者为什么它似乎与客户端IP地址变化相关(这是一个内部网应用吗?还有其他事情会在5分钟内发生吗?)。
以下web.config
setting应创建持续6个月的会话,并且将在应用程序池回收后继续存在:
<sessionState mode="StateServer" timeout="262800"
stateConnectionString="tcpip=127.0.0.1:42424"/>
当然,您必须在您的计算机上运行状态服务器,并且会话中存储的所有内容都需要可序列化。
正如Jarrett所指出的那样,想要在没有活动的情况下长时间保持会话活动是相当奇怪的,如果会有大量用户,我不会推荐它,但如果真的是10并且只有10个用户,可能还可以。