前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring MVC表单防重复提交

Spring MVC表单防重复提交

作者头像
Java技术栈
发布于 2018-03-30 04:15:42
发布于 2018-03-30 04:15:42
1.7K00
代码可运行
举报
文章被收录于专栏:Java技术栈Java技术栈
运行总次数:0
代码可运行

利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。

创建注解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Token {

    boolean create() default false;

    boolean remove() default false;

}

在跳转页面的方法上加上:@Token(create = true)\ 在提交的action方法上加上:@Token(remove = true)

创建过滤器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TokenInterceptor extends HandlerInterceptorAdapter {

    private Logger logger = Logger.getLogger(TokenInterceptor.class);

    private static final String TOKEN = "token";

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object handler) throws Exception {
        if (handler instanceof HandlerMethod) {
            Method method = ((HandlerMethod) handler).getMethod();
            Token annotation = method.getAnnotation(Token.class);
            if (annotation != null) {
                HttpSession session = request.getSession();

                // 创建token
                boolean create = annotation.create();
                if (create) {
                    session.setAttribute(TOKEN, UUID.randomUUID().toString());
                    return true;
                }

                // 删除token
                boolean remove = annotation.remove();
                if (remove) {
                    if (isRepeatSubmit(request)) {
                        logger.warn("表单不能重复提交:" + request.getRequestURL());
                        return false;
                    }
                    session.removeAttribute(TOKEN);
                }
            }
        } else {
            return super.preHandle(request, response, handler);
        }
        return true;
    }

    private boolean isRepeatSubmit(HttpServletRequest request) {
        String token = (String) request.getSession().getAttribute(TOKEN);
        if (token == null) {
            return true;
        }

        String reqToken = request.getParameter(TOKEN);
        if (reqToken == null) {
            return true;
        }

        if (!token.equals(reqToken)) {
            return true;
        }

        return false;
    }

}

配置拦截器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--配置拦截器 -->  
<mvc:interceptors> 
    <mvc:interceptor>  
        <mvc:mapping path="/**" /> 
        <bean class="com.example.web.interceptor.TokenInterceptor"/>    
    </mvc:interceptor>
</mvc:interceptors>

表单添加token

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="hidden" id="token" name="token" value="$!{session.getAttribute('token')}"/>

在form表单里面添加token域,提交表单时需要传过去。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
域控制器安全
本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,本章是域控制器安全,介绍了使用Kerberos域用户提权和导出ntds.dit中散列值的方法,并针对域控制器攻击提出了有效的安全建议
红客突击队
2022/09/29
7650
域渗透之导出域Hash
Mimikatz有一个功能(dcsync),它利用目录复制服务(DRS)从 NTDS.DIT 文件中检索密码 Hash 值。
全栈程序员站长
2022/07/13
1.3K0
域控安全之ntds.dit导出
在通常的情况下,即使我们拥有域管理员的权限也是无法读取域控制器的C:\Windows\NTDS\ntds.dit文件,是因为活动目录始终访问着这个文件,所以禁止读取.使用windows的本地卷影拷贝就可以获得文件的副本
亿人安全
2023/02/28
2.1K0
域控安全之ntds.dit导出
抓取域密码哈希的各种工具集合
在拿到域管理员权限之后,都会提取所有域用户的密码哈希进行离线破解和分析。这些密码哈希存储在域控制器(NTDS.DIT)中的数据库文件中,并包含一些附加信息,如组成员和用户。
信安之路
2021/07/29
2.4K0
攻击域控丝滑小连招(2)
Mimikatz有一个名为dcsync的功能,它利用目录复制服务直接读取ntds.dit文件检索域哈希值,但是必须使用域管理员权限运行mimikatz才可以读取ntds.dit。
Ms08067安全实验室
2023/11/15
3520
攻击域控丝滑小连招(2)
横向移动与域控权限维持方法总汇
如果找到了某个用户的ntlm hash,就可以拿这个ntlm hash当作凭证进行远程登陆了 其中若hash加密方式是 rc4 ,那么就是pass the hash 若加密方式是aes key,那么就是pass the key 注意NTLM和kerberos协议均存在PTH: NTLM自然不用多说 kerberos协议也是基于用户的client hash开始一步步认证的,自然也会受PTH影响
ConsT27
2022/02/11
1.8K0
横向移动与域控权限维持方法总汇
内网横向移动:Kerberos认证与(哈希)票据传递攻击
在上节《内网横向移动:获取域内单机密码与Hash》中,我们讲了如何在内网渗透中抓取主机的的密码和哈希值。获取了Hash,我们可以对其进行破解,破解不出来的,我们就可以利用他们通过PTH、PTT等攻击手法继续对内网横向渗透,即下面要讲的。
FB客服
2020/08/11
2.1K0
内网横向移动:Kerberos认证与(哈希)票据传递攻击
导出域内用户hash的几种方法
在渗透测试期间,可以利用域管权限对域内用户hash进行导出和破解。这些域内用户hash存储在域控制器(NTDS.DIT)中的数据库文件中,并带有一些其他信息,如组成员身份和用户。
Jumbo
2018/07/26
5.1K0
导出域内用户hash的几种方法
Kerberos域用户提权漏洞(MS14-068)分析与防范
大家好,这里是 渗透攻击红队 的第 36 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更
渗透攻击红队
2020/12/14
7.3K1
PTH攻击(hash传递)
即Pass-The-Hash,首先我们来说下为什么要使用HASH传递,一是再目标机>=win server 2012时,lsass.exe进程中是抓不到明文密码的,二是随着信息安全意识的提高,弱口令情况逐渐降低,我们经常会遇到拿到hash却解不开的情况,综上,只有hash,我们依然可以正常登录。
枪哥四海为家
2022/03/09
1.3K0
PTH攻击(hash传递)
针对于成百上千的工控内网如何精准快速的找到突破口?
大家好,这里是 渗透攻击红队 的第 65 篇文章,本公众号会记录一些红队攻击的案例,不定时更新
渗透攻击红队
2021/08/06
6870
[干货基础]域渗透学习
Kerberos是一种由MIT提出的一种计算机网络授权协议,旨在通过使用加密技术为客户端/服务端应用程序提供强大的认证服务。域内访问其他应用应遵循服务Kerberos协议。完整的域内应用访问流程如图所示,首先由客户端向域控发起认证请求,域控验证用户是否属于合法域用户,若合法则由域控响应主机请求分发TGT认证票据(黄金票据可伪造TGT),拿到证书后主机可以继续请求访问域内的应用服务,若权限符合域控会返回允许主机访问域内某应用服务的TGS票据,主机拿着TGS票据访问对应的应用服务,该应用服务器验证TGS通过后主机即可顺利访问应用服务
天钧
2020/11/03
1.7K0
[干货基础]域渗透学习
史上最强内网渗透知识点总结
文章内容没谈 snmp 利用,可以去乌云等社区获取,没有后续内网持久化,日志处理等内容。
信安之路
2018/08/08
9.2K0
内网渗透基石篇之域控制器
在通常情况下,即使拥有管理员权限,也无法读取域控制器中的ndts.dit文件,但是我们又非常想获得这个文件的内容,这个时候就需要使用windows本地卷影拷贝服务VSS。在活动目录中,所有的数据都保存在ntds.dit文件中,ntds.dit是一个二进制文件,包含用户名、散列值、组、GPP、OU等与活动目录相关的信息,它和SAM文件一样,被windows系统锁死。卷影拷贝服务VSS,本质上属于快照技术的一种,主要用于备份和恢复,即使文件当前处于锁死状态。
FB客服
2021/08/24
1.1K0
内网渗透:一次完整的域渗透
域(Domain)是一个有安全边界的计算机集合(安全边界的意思是,在两个域中,一个域中的用户无法访问另一个域中的资源)
亿人安全
2022/12/23
2.5K0
内网渗透:一次完整的域渗透
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,NTLM-Relay,Kerberos_TGS,GPO&DACL,域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
没事就要多学习
2024/07/18
2400
【内网安全】横向移动&NTLM-Relay重放&Responder中继攻击&Ldap&Ews
内网学习笔记 | 27、Kerberos 域用户提权漏洞
在 2014 年微软修复了 Kerberos 域用户提权漏洞,即 MS14-068,CVE 编号为 CVE-2014-6324,该漏洞影响了 Windows Server 2012 R2 以下的服务器,该漏洞允许 RT 将任意用户权限提升至域管级别。
TeamsSix
2022/09/20
1.2K0
内网学习笔记 | 27、Kerberos 域用户提权漏洞
内网渗透-导出HASH的多种方式
在内网渗透中当我们得到一台高权限用户的身份时,就可以抓取到当前机器上的各类密码。虽然任务要求是导出域hash的方式,但在内网渗透中,获取当前机器的hash也有可能获取到域用户的hash,因此这里也分析一下如何获取当前机器的明文密码。
亿人安全
2024/08/13
5240
内网渗透-导出HASH的多种方式
kerberos-MS14-068(kerberos域用户提权)
微软官方在2014年11月18日发布了一个紧急补丁,Windows全版本服务器系统受到影响,包括Windows Server 2003,Windows Server 2008,Windows Server 2008 R2,Windows Server 2012和Windows Server 2012 R2,修复了Microsoft Windows Kerberos KDC(CVE-2014-6324),该漏洞可导致活动目录整体权限控制受到影响,漏洞允许黑客将域内任意用户权限提升至域管理级别。通俗来讲,就是恶意攻击者获取域内任何一台计算机shell权限,同时还知道任意一名域用户用户名、sid、密码,即可拿下域管理员进而拿下域控制器,最后拿下整个域权限。
Ms08067安全实验室
2023/11/21
4510
kerberos-MS14-068(kerberos域用户提权)
域渗透之NTML-Hash
早期SMB协议在网络上传输明文口令。后来出现"LAN Manager Challenge/Response"验证机制,简称LM,它是如此简单以至很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。Windows加密过的密码口令,我们称之为hash(中文:哈希),Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。
陈殷
2020/03/06
4.6K0
推荐阅读
相关推荐
域控制器安全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档