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

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

1、请求加时间戳

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

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

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

$("#curdate").attr("value",timestamp);

②ajax请求后台

var timestamp =(newDate()).valueOf();

var data={"a":a,"b":b,"curdate":timestamp};

2、jsp获取数据需要验证

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

...

Employee ID:

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

起初,这个例子似乎是不会轻易遭受攻击的。毕竟,有谁会输入导致恶意代码的 URL,并且还在自己的电脑上运行呢?真正的危险在于攻击者会创建恶意的 URL,然后采用电子邮件或者社会工程的欺骗手段诱使受害

者访问此 URL 的链接。当受害者单击这个链接时,他们不知不觉地通过易受攻击的网络应用程序,将恶意内容带到了自己的电脑中。这种对易受攻击的 Web 应用程序进行盗取的机制通常被称为反射式 XSS。

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

①引入c标签

②自定义el函数

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

public classELFilter {public staticString 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("}", "");returnmessage;

}

}

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

1.0

2.0

function

/WEB-INF/elfilter.tld

filter

com.a.b.util.elecheat.ELFilter

java.lang.String filter(java.lang.String)

3前台引用

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

tomcat

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

修改方法:

在tomcat的conf路径下,server.xml中,

nginx

修改nginx.conf

http {

……

server_tokens off; ->即可隐藏版本号

…….

}

4、----

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

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

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

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

---http头信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值