Struts + Hibernate保持状态探讨

本文探讨了用户输入数据未通过验证时的安全表单状态保持方法。包括权限验证、自定义验证类、逻辑验证及错误处理策略,确保用户体验的同时保障系统的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    讨论一下用户输入数据没有通过逻辑严正的时候,如何安全的保持表单状态。
    首先,要在每个动作(.do)上验证权限,可以在form的validate中验证,权限是一切操作的前提。
    个人感觉validate验证框架的使用总是怪怪的,引入太多xml,不符合oo习惯,这里可以创建自己的验证类,比如创建validate包,来封装验证方法,在form的validate中调用。
    通过了权限和基本格式的验证,下面还要通过逻辑上的验证,这点需要在handler层里面做了(也就是业务逻辑层的最底层,被action调用)。如果验证失败,可以返回自定义错误,被action捕获到,返回页面。
    这时,页面还需要保持住刚才的状态,输入的数据不能丢失,或者只把错误的数据删掉。
    比如,我们注册用户,因为用户名已经有了,所以要换名,页面应该显示“名字已存在”,并保留原来的密码,名字置空或不改。这需要把form的范围设置成session,并且有两种情况:一是提交和显示的都是一个form,这时只能在配置文件里把scope改成session,较死板;二是不使用一个form,比如提交了一个用户名来查询用户相关信息,可以session.setAttribute。Jsp把form显示出来,用户填写,提交,验证失败了直接返回页面或者把错误的信息置为空字符串再重新session.setAttribute再返回页面,直到成功就removeAttribute。
    如果用户直接输入网页的地址呢?这肯定是要屏蔽掉的。有一种方法就是在页面引入逻辑,可以进行权限验证和判断某form是否存在等。还有一种方法就是用struts标签单纯看form是否存在,不存在就redirect。由于在每个动作上都使用了权限验证,所以第二种方法我觉得足够了。
    如果恶意伪造代码欺骗服务器,由于仍然没有权限,就不能执行任何动作。
    最后还要说,不存在100%安全的代码,是人做的就会被人破解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值