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头信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven最佳实践

尽管Maven提供了“配置之上的约定”解决方案,但是仍然有足够多的必要配置引起严重的头痛。 在这篇文章中,我将与您分享一些最佳实践,以简化对POM文件的维护。 请勿使用已弃用的引用,例如$ {artifactId}或$ {pom.artifactId}。 使用…

51Nod - 1381 硬币游戏

51Nod - 1381 硬币游戏 有一个简单但是很有趣的游戏。在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示)。两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛…

Android中Activity和Fragment之间的通信

Android中Activity和Fragment之间的通信 Fragment启动Activity传数据到Fragment 举例:城市选择列表。一个Fragment启动Activity,Activity再把城市选择数据回传到Fragment中。Fragment中方法iv_city.setOnClickListener(new View.OnClickListener() {Ove…

NoSQLUnit 0.3.0发布

介绍 单元测试是一种验证应用程序中可测试的最小部分的方法。 单元测试必须遵循FIRST规则; 这些是快速,隔离,可重复,自我验证和及时的。 考虑到没有持久层(典型的关系数据库或新的NoSQL数据库)的JEE应用程…

proftpd java_Proftpd:编译安装

下载 proftpd# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5a.tar.gz# wget https://github.com/proftpd/proftpd/archive/v1.3.5a.tar.gz# yum -y install gcc openssl-devel# ./configure --prefix/usr/local/proftpd/ \--sysconfdir/usr/local/proftpd/ \--ena…

javascript 相关小的知识点集合

本文主要是列出一些javascript 相关的,不限于javascript的,容易记错或者遗忘的小知识,小技巧。 1、javascript中的false 在 JavaScript,常见的 false 值: 0, 0, 0, -0, false, ,null,undefined,NaN 要注意空数组([])和…

AOS – 另外一个独特的页面滚动动画库(CSS3)

AOS 是一个用于在页面滚动的时候呈现元素动画的工具库,你可能会觉得它和 WOWJS 一样,的确他们效果是类似的。但是AOS是 CSS3 动画驱动的库,当你滚动页面的时候能让元素动起来,当页面滚回顶部的时候,元素能够回到前一个…

关于Java包

我希望我们都同意,方法和类应该很小,并且只有很少的依赖关系。 这种观点被广泛接受,而对“小”的解释则各不相同。 关于这一点有很多文献。 但是包裹呢? 有些人将包视为名称空间。 因此,包只是允许您为类重用名称的东西…

python中打开文件时只允许写入的模式是_详解python中各种文件打开模式

在python中,总的来说有三种大的模式打开文件,分别是:a, w, r当以a模式打开时,只能写文件,而且是在文件末尾添加内容。当以a模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发现读出来的…

KVM 基本硬件容量扩容

在工作当中如果虚拟机的容量不够使用 如何添加呢? CPU添加 cpu添加有两种方式: 1 创建虚拟机的时候可以添加 # virt-install --help | grep cpu--vcpusVCPUS Number of vcpus to configure for your guest. Ex:--vcpus 5--vcpus 5,maxcpus10--vcpu…

JavaFX 2.0 Hello World

在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序。 (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章《 安装JavaFX 2.0和NetBeans 7.7.1》 )单击“文件”菜单中的“新建项目”以打开项目向导。 然后选择“…

java 线程强制停止线程_java多线程之停止线程

在多线程开发中停止线程是非常重要的技术点。停止线程在Java语言中并不像break语句那样干脆。须要一些技巧性的处理。一、 异常法採用异常法来停止一个线程。首先我们须要了解一下两个方法的使用方法:1、interrupt()方法public class MyThread extends Thread{Over…

Android 上下文菜单(Context Menu)

一、概述 Android中,上下文菜单是通过onLongClick(...)事件访问的。在事件触发后显示菜单项。 在使用上下文菜单时,通常在onCreate(...)方法中,先行注册上下文菜单。在实现onCreateContextMenu(...)方法和onContextItemSelected(...)方法。 注…

RGB颜色空间alpha混合的方法

http://blog.csdn.net/xhhjin/article/details/6444782http://blog.csdn.net/xhhjin/article/details/6445460http://www.cnblogs.com/graphics/archive/2012/08/23/2643086.htmlhttp://www.oschina.net/code/snippet_1425046_27446 转载于:https://www.cnblogs.com/eustoma/p/…

Java怪异实践

总览 Java中有许多实践使我感到困惑。 这里只是一些。 使用-Xmx和-Xms 选项-Xmx广泛用于设置最大内存大小。 如Java HotSpot VM Options中所述,以-X开头的选项是非标准的(不保证在所有VM实现中均受支持),并且在以后的JDK发行版中…

saml java实现_java-saml

软件简介java-saml 是 Java 的 SAML 开发包。Maven&#xff1a;com.oneloginjava-saml2.4.0示例代码&#xff1a;Map samlData new HashMap<>();samlData.put("onelogin.saml2.sp.entityid", "http://localhost:8080/java-saml-tookit-jspsample/metadat…

双系统Ubuntu分区扩容过程记录

本人电脑上安装了Win10 Ubuntu 12.04双系统。前段时间因为在Ubuntu上做项目要安装一个比较大的软件&#xff0c;导致Ubuntu根分区的空间不够了。于是&#xff0c;从硬盘又分出来一部分空间&#xff0c;分给Ubuntu。于是有了这篇Ubuntu扩容过程记录&#xff0c;也可以当作是一篇…

使用MongoDB的MapReduce

MapReduce是Google在2004年推出的一种软件框架&#xff0c;用于支持对计算机集群中的大数据集进行分布式计算。 您可以从此处阅读有关MapReduce的信息 。 MongoDB是用C 编写的面向开源文档的NoSQL数据库系统。 您可以从此处阅读有关MongoDB的更多信息。 1.安装MangoDB。 请遵…

java epson指令集_EPSON机械手 SPEL+语言指令集

下面是全部指令的简明列表&#xff0c;放在这里方便参考。之后重要的指令&#xff0c;勇哥要拿出来单独学习。系统管理相关命令Reset 将控制器重置为初始状态。SysConfig 显示系统设置参数。SysErr 返回最新的错误状态或警告状态。Date 显示日期。Time 显示时间。Date$ 以字符串…

1、关于action中解决跨域请求问题:

&#xff08;1&#xff09;、action中使用ajax传值时HttpServletRequest request ServletActionContext.getRequest(); String origin request.getHeader("Origin"); HttpServletResponse response ServletActionContext.getResponse(); response.setContentType(…