Java防止非法和重复表单提交的分析

告别手动输入!用Burp插件+ddddocr,5分钟搞定图片验证码自动识别 本文详细介绍了如何利用Burp插件和ddddocr开源库快速构建图片验证码自动识别系统,实现高效、零成本的验证码自动化解决方案。通过环境搭建、性能调优和Burp Suite深度集成,显著提升安全测试效率,特别适用于金融和电商系统的批量测试场景。 阅读详情
第一,对于不支持POST的,可以简单的使用如下代码
if ("POST".equals(request.getMethod())) {
  
// 正常进行
}
else{
  
// 异常请求
  out.print("异常访问");
  
return;
}

如果是servlet, 可以将doGet方法直接返回,不进行处理就行了
public void doGet(HttpServletRequest request, HttpServletResponse response) {
  
return;
}

public void doPost(HttpServletRequest request, HttpServletResponse response) {
  
// 正常进行操作
}

还可以采用特定的标志来区分,比如
<form><input type="hidden" name="action" value="insert"/></form> 

程序里这样判断
if ("POST".equals(request.getMethod()) && ("insert".equals(request.getParameter("action")))) {
  
// 正常进行
}
else{
  
// 异常请求
  out.print("异常访问");
  
return;
}

第二,判断提交的来源referer,代码如下
if ("POST".equals(request.getMethod())) {
  String referer 
= request.getHeader("referer");
  
if (referer == null || !referer.startsWith("http://"+request.getServerName())) {
    
// 非法来源
    return;
  }

  
// 正常进行
}
else{
  
// 异常请求
  out.print("异常访问");
  
return;
}

第三 防止重复提交的hashCode
在表单显示页面
  //生成一个formhash,算法可以自己定,不随便重复就可以了
  String formhash = MD5.encode(Long.toString(new Date().getTime()));
  
//读取当前session里面的hashCode集合,此处使用了Set,方便判断。
  Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
  
if (formhashSession == null) {
    formhashSession 
= new HashSet<String>();
  }

  
// 检测重复问题
  while (formhashSession.contains(formhash)) {
    formhash 
= MD5.encode(Long.toString(new Date().getTime()));
  }

  
// 保存到session里面
  formhashSession.add(formhash);
  
// 保存
  session.setAttribute("formhashSession", formhashSession);

表单里面增加如下字段
<input type="hidden" name="formhash" id="formhash" value="<%=formhash%>" /> 

在表单提交页面进行如下处理
    // 拿到表单的formhash
    String formhash = upload.getParameter("formhash");
    
// 拿到session里面的集合
    Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
    
// 如果没有,则是重复提交,或者非法提交
    if (formhashSession == null || !formhashSession.contains(formhash)) {
      out.println(
"请不要重复提交!");
      
return;
    }

    
// 下面进行其它的操作
    
// 
    
// 最后,如果操作成功,从session里面把这个formhash 删掉!
    
// 以免用户少填写了某个字段,造成表单无法再次提交
    formhashSession.remove(formhash);
    session.setAttribute(
"formhashSession", formhashSession);

以上内容为本人原创内容,如要转载,请保留完整信息。并注明来源为http://blog.youkuaiyun.com/或http://www.Java2000.net,
ScanNetV2 数据集讲解和选择性下载 写在前面的话: 不可转载!!!!!!!!!!!! ScanNetV2一共1.2T,数据太大本文会简单讲解如何下载自己想要的文件,并附上修改后的下载程序 ScanNetV2:http://www.scan-net.org/ 简介 ScanNetV2的作者是斯坦福大学的博士,其团队通过收集RGB-D的视频序列,通过ipad应用加深传感器而收集的,然后视频会被上传到服务器,并被自动重建。然后,视频会被给到亚马逊 Mechanical Turk,将标注工作众包出去。ScanNetV2是RGB-D数据集,. 阅读详情

相关推荐

跨阻放大器(TIA)的输入输出阻抗的定义、分析和影响因素

跨阻放大器(Transimpedance Amplifier,简称TIA)是一种常用于将电流信号转换为电压信号的放大器。在TIA电路中,输入阻抗是指输入端对电流信号的响应能力,输出阻抗是指输出端对负载电阻的驱动能力。本文将分别介绍TIA的输入和输出阻抗的定义、分析以及影响因素。

weixin_44378594的博客 1万+

java springboot 通过Referer防止跨站点请求伪造

防止跨站点请求伪造 获取 referer 为null, 无法获取 referer 导致过滤失败

qq_44154912的博客 4969

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

先把这连个都添加到场景中,然后把kinect的depth相机拖到vision sensor中,把kinect的script也拖到vision sensor中,同时要注意修改深度相机的坐标,及修改script,删掉/rgb部分。由于需要导入到仿真场景中PDF文件不能直接导入,所以需要生成图下文件,使用windows自带的画图工具,生成以厘米为单位的图像格式,大小和标定板的设置大小一直。可以生成需要用的标定板的文件,设置标定板的大小,棋盘格的大小,等相关的参数,之后可以保存PDF文件。设置plane的大小。

hong3731的专栏 1753

java filter 是否能拦截到form表单的所有数据_SpringMVC接收请求参数所有方式总结...

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复)下一篇:昨天分享资料不小心把百度网盘深处的秘密泄露了(已修复)作者:Throwable来源:http://suo.im/6lV5ng在日常使用 SpringMVC 进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结。SpringMV...

weixin_39985820的博客 516

Excel曲线拟合实战:从基础趋势线到高级回归分析

本文系统介绍了Excel曲线拟合的完整工作流,从基础的散点图与趋势线应用,到利用Solver插件进行自定义高级回归分析。文章详细讲解了线性、多项式、指数、对数等六大常用数学模型的适用场景与选择方法,并强调了通过R²值、残差图评估拟合效果、避免过拟合与外推风险的关键步骤,帮助读者掌握从数据探索到预测评估的实战技能。

weixin_29280219的博客 538

AI医疗影像诊断工具2025 完整教程

本教程所述工具均为辅助诊断设备,不可替代执业医师判断。部署使用需遵守当地医疗器械管理法规。推荐开源框架组合:代码太多打包上传网盘了 自行下载。2025年的AI医疗影像诊断工具将以。

m0_60084632的博客 2029

form表单拦截判空方法测试可行上传文件

@TOC <form role="form" method="post" id="updateFile" action="/sell/seller/product/save" enctype="multipart/form-data" onsubmit="return checkip()"> <div cla...

liujian397361的博客 320

文章ACCEPT之后填写内容教程-Springer-Verlag即施普林格

1. 确认corresponding author通讯作者机构是否正确(最好细分到系,如搜不到系只填大学也可)这些信息因为在投稿的时候都填过,所以一般都没问题,可确认并继续。2. Co-Author: 这篇文章有没有其他作者,如果有就选yes,并确认投稿时所填的作者姓名和机构是否正确。这个也是如果前期都填对了就不用修改。3. Research funders: 问文章的研究有没有资助,没有就选no,有就选yes,并填写机构名称和grant/contact numbers。

ZhangJiqun&191cm&85kg 4795

Java -- form 表单

记录表单的一些知识点

sky_eyeland的博客 3927

数字孪生教程大全之 我们如何构建数字孪生?数字孪生的五个级别都是什么

文章摘要 什么是数字孪生? 我们如何构建数字孪生? 开发智能数字孪生系统的框架 什么是数字孪生? 数字孪生是一个不言自明的术语,用于识别物理系统的数字化版本。数字孪生的最早参考来自大卫·格伦特(David Gelernter )的小说作品。在他 1995 年的书中,Gelernter 博士为读者提供了未来有趣的可能性——万维网。前网络书籍谈到了计算机系统上的镜像数字世界。有些人可能会争辩说,我们的 Meta-verse 是新的数字世界——现实世界的数字孪生。但是,还有其他可能性,时间可能会讲述一个更好的

iCloudEnd的博客 3643

Qt | linux+openCV+Qt6.5.3环境搭建成功版(带例子)

opencv安装 Qt 实战举例

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1885

java filter 是否能拦截到form表单的所有数据_java 知识点总结(框架篇)

目录基础篇​zhuanlan.zhihu.com框架篇 一、 Struts1的运行原理 二、 Struts2的运行原理 三、 struts2的体系结构 四、 Spring MVC运行原理 五、 Struts1.x与Struts2.x的区别 六、 Spring MVC、struts1和struts2区别 七、 Struts2中result中的type类型 八、 Struts2标签 九、 SSI整合 ...

weixin_39755873的博客 623

Winform从入门到精通(38)——StatusStrip(史上最全)

本文介绍StatusStrip控件的详细用法,包含所有属性和事件,绝对史上最全!

qq_34059233的博客 2759

[转]Java防止非法和重复表单提交的分析

来源:http://blog.youkuaiyun.com/ 第一,对于不支持POST的,可以简单的使用如下代码 if ("POST".equals(request.getMethod())) {  // 正常进行}else{  // 异常请求  out.print("异常访问");  return;} 如果是servlet, 可以将doGet方法直接返回,不进行处理就行了 public ...

梦想_起航 137

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

防止表单重复提交的4种方法

1.背景与介绍: 平时开发的项目中可能会出现下面这些情况: 由于用户误操作,多次点击表单提交按钮。 由于网速等原因造成页面卡顿,用户重复刷新提交页面。 黑客或恶意用户使用postman等工具重复恶意提交表单(攻击网站)。 这些情况都会导致表单重复提交,造成数据重复,增加服务器负载,严重甚至会造成服务器宕机。因此有效防止表单重复提交有一定的必要性。 2.解决方案 2.1 通过JavaScript屏蔽提交按钮(不推荐) 通过js代码,当用户点击提交按钮后,屏蔽提交按钮使用户无法点击提交按钮或点击无

u013733643的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

防止表单重复提交(java实现)

一、场景 由于用户误操作,多次点击表单提交按钮。 由于网速等原因造成页面卡顿,用户重复刷新提交页面。 黑客或恶意用户使用postman等工具重复恶意提交表单(攻击网站)。 这些情况都会导致表单重复提交,造成数据重复,增加服务器负载,严重甚至会造成服务器宕机。因此有效防止表单重复提交有一定的必要性。 二、使用AOP自定义切入实现 实现原理: 自定义防止重复提交标记(@AvoidRepeatableCommit)。 对需要防止重复提交的Congtroller里的mapping方法加上该注解。 新增A

低调城主的博客 101万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JAVA防止重复和非法提交表单

 1、当用户进行的是Refresh/Reload/Back/Forward操作、以及先Back再Submit操作时,仅仅是reloading先前的结果页。       2、当用户重复提交同一个任务操作时,后台服务接收并处理第一次提交的任务,后面提交不起作用(不转向也不提示)。       3、该功能具有公用性。 基本形成思路:       1、在basic filter中实现公

xuexijava的专栏 2396
上一篇: 增强版JAVA实现文本形式的树状结构显示
下一篇: Java动态显示文件上传进度的简单实现
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值