防止非法和重复提交
来源:互联网 发布:软件测试的艺术 编辑:程序博客网 时间:2024/04/30 03:08
第一,对于不支持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%>" />
- 防止非法和重复提交
- JAVA防止重复和非法提交表单
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的方法
- Java防止非法和重复表单提交的分析
- Java防止非法和重复表单提交的方法
- 标签和防止重复提交
- struts2防止重复提交和等待画面
- 防止用户不断刷新和重复提交
- 如何防止多次提交和重复刷新
- JavaWeb防止重复提交,重复刷新和后退
- 防止重复提交数据
- C++内存管理
- Windows 7 下安装和环境变量配置J2SE和TOMCAT6.0
- java数据类型
- JavaVerParser.java
- DIV 在网页上不动, 而且不抖动...
- 防止非法和重复提交
- Cdecl/stdcall函数调用内存模型(gcc 3.4.5)
- 代码高亮网站收集
- Android View添加 Listener
- C++内存管理
- hellow, this is my first paper.
- STAR原则 -- 一份简历带来的话题
- 用户注册后,使用激活码的Java实现
- 2009-12-14 Mon