背景:当时项目没用什么框架,过滤器,请求限制等都需要自己手写。

1、请求加时间戳

  在后台过滤器中可以加判断,如果请求时间戳与服务器时间相差太大,可以返回异常,具体情况可以具体使用。

  请求中加时间戳的示例如下:

  ①form表单提交,在表单内加隐藏域,通过js代码给id赋值。

<input id="curdate" name="curdate" type="hidden" />$("#curdate").attr("value",timestamp);

  ②ajax请求后台

var timestamp =(new Date()).valueOf();
var data={"a":a,"b":b,"curdate":timestamp};

2、jsp获取数据需要验证

  例以下代码可能存在漏洞:

<% String eid = request.getParameter("eid"); %>
...
Employee ID: <%= eid %>  

  如果 eid 只包含标准的字母或数字文本,这个例子中的代码就能正确运行。如果 eid 里有包含元字符或源代码中的值,那么 Web 浏览器就会像显示 HTTP 响应那样执行代码。  

  起初,这个例子似乎是不会轻易遭受攻击的。毕竟,有谁会输入导致恶意代码的 URL,并且还在自己的电脑上运行呢?真正的危险在于攻击者会创建恶意的 URL,然后采用电子邮件或者社会工程的欺骗手段诱使受害
者访问此 URL 的链接。当受害者单击这个链接时,他们不知不觉地通过易受攻击的网络应用程序,将恶意内容带到了自己的电脑中。这种对易受攻击的 Web 应用程序进行盗取的机制通常被称为反射式 XSS。

  所以需要将数据过滤,使用c标签,再加上自定义el表达式,过滤特殊字符。最终代码如下:

<input type="hidden" name="cons_no" value="<c:out value='${ff:filter(cons_no)}'/>"/>

①引入c标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

②自定义el函数

  1在任意位置写一个过滤方法  

public class ELFilter {public static String filter(String message){if(message==null){return null;}//结合实际,数据都为简单的数字或者字母汉字,不会出现特殊符号,把以下特殊字符直接抹掉message = message.replace("<", "");message = message.replace(">", "");message = message.replace("?", "");message = message.replace("#", "");message = message.replace("$", "");message = message.replace("&", "");message = message.replace("%", "");message = message.replace("\n", "");message = message.replace("\"", "");message = message.replace("'", "");message = message.replace("{", "");message = message.replace("}", "");return message;}
}

  2在项目WEB-INF下创建 elfilter.tld 文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"  version="2.0">  <tlib-version>1.0</tlib-version>  <jsp-version>2.0</jsp-version>  <short-name>function</short-name>  <uri>/WEB-INF/elfilter.tld</uri><!-- 此uri好像随便写,只要与页面引用时一致就可以 --><function>  <name>filter</name>  <function-class>com.a.b.util.elecheat.ELFilter</function-class>  <function-signature>java.lang.String filter(java.lang.String)</function-signature>  </function>
</taglib>

  3前台引用

<%@ taglib prefix="ff" uri="/WEB-INF/elfilter.tld"%>

参考:自定义el函数    使用JSTL标签需要的JAR包和JSP页面的引用   自定义EL函数防止HTML注入

3、隐藏http响应头中的nginx或者apach版本信息

  tomcat

  修改之前   Server:Apache-Coyote/1.1  ,泄露了当前容器的类型,可能会被针对攻击

  修改方法:
  在tomcat的conf路径下,server.xml中,
  <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" server="自定义信息"/>

  nginx

  修改nginx.conf

  http {
    ……
    server_tokens off; ->即可隐藏版本号
    …….
  }

4、----

java web开发常见漏洞攻击及解决办法

.Header Manipulation漏洞

---禁制除get、post外其他的访问方式

---限制同一ip访问频率

---前后台数据获取时加入验证或者过滤

---cookie安全   COOKIE安全与防护

---http头信息

给url加时间戳,骗过浏览器缓存

转载于:https://www.cnblogs.com/xinzhisoft/p/10226638.html

java web项目请求控制及简单漏洞防范相关推荐

  1. java web 保护_java web项目请求控制及简单漏洞防范

    背景:当时项目没用什么框架,过滤器,请求限制等都需要自己手写. 1.请求加时间戳 在后台过滤器中可以加判断,如果请求时间戳与服务器时间相差太大,可以返回异常,具体情况可以具体使用. 请求中加时间戳的示 ...

  2. 1)Java web项目配置(最简单的javaweb项目)

    Java web示例一 1.创建一个简单的Maven 项目 2.在webapp/WEB-INF下创建两个文件夹classes和lib,classes用来存放编译后输出的classes文件,lib用于存 ...

  3. Idea创建简单Java Web项目并部署Servlet

    1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...

  4. 简单的Java web项目代码(8个)

    引言:Java web项目主要采用mvc的的设计思想,系统主要采用java+jsp+servlet+mysql+eclipse实现,具有登陆.分页.导出excel,增删改查等功能,适合初学者,满足基本 ...

  5. 关于Java Web项目的技术点探讨

    目录 一.目的 二.技术点介绍 1.主要技术点 (1)在新技术不断涌现的背景下,大型网站架构自创立以来经历了不断的重塑.优化.功能拓展,首先对大型网站架构的变迁历程进行管窥蠡测. (2)在对上述架构变 ...

  6. java web项目为什么我们要放弃jsp?

    前戏: 以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/Oracle等等). 随着时代的发展,渐渐的许多 ...

  7. 做一个完整的Java Web项目太难了,因为这些你不会!

    作者:元素侠Jason 链接:https://blog.csdn.net/JasonLiuLJX 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收 ...

  8. 做一个完整的Java Web项目需要掌握的技能

    转自:  https://blog.csdn.net/JasonLiuLJX/article/details/51494048 ------------------------------------ ...

  9. 使用Spring Boot来加速Java web项目的开发

    我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用 ...

最新文章

  1. bat no moudle named xxx
  2. 中断技术在计算机系统中的应用,中斷在操作系统中的应用.doc
  3. 这件事,阿里爱了10年
  4. java应用性能指标_性能与可靠性:Java应用为何像F1汽车
  5. 05 吸收应用-会整理还不够?教你吸收、联想、输出、应用
  6. 蓝桥杯2019真题-完全二叉树的权值
  7. C++杂记之this指针
  8. 关于C#中Thread.Join()的一点理解
  9. unity3d 之时间
  10. 邮件群发系统 php,QQ邮箱群发PHP源码
  11. NetLimiter Pro
  12. uva 12307 - Smallest Enclosing Rectangle(旋转卡壳)
  13. 对京东全球购的一次投诉
  14. 如何用一句话激怒互联网人?
  15. 追寻绿色世界、草木清香
  16. 云测平台iOS环境搭建
  17. reactjs 视频教程
  18. C++:实现量化SMM Caplet校准测试实例
  19. Swing 入门介绍
  20. POST请求与GET请求

热门文章

  1. 日照私家驾车族必看之摄像头和测速器地点
  2. Mysql的两种存储引擎以及区别
  3. python如何获取javascript动态产生的数据
  4. 合成未来宝宝照片_当英国皇室宝宝长大:阿奇王子变卷毛星人,夏洛特公主颜值最能抗...
  5. java丑数算法_java实现找丑数
  6. 遇到一个在linux下无法跨网段发送接收广播包的问题
  7. Ubuntu定制live cd
  8. egg前面加什么,egg前加a还是an?
  9. 【Elasticsearch】 解决数据较少的时候 算分不准的问题 dfs_query_then_fetch
  10. 【MySQL】MySQL监控工具 mysql-monitor