java web如何防止html,js注入

用户可以在填写资料时加入网页标签或<script>标签的脚本,这样会影响整个网站,怎样可以防止html,js注入?

PS:不要单纯的理论,具体怎么操作

在java Web体系中,可以写自定义标签,过滤用户输入,也可以写一个filter过滤器。比如说自定义标签。

开发步骤:

1 写一个标签处理类

2  在/WEB-INF/目录下,写一个*.tld文件,目的是让Web容器知道自定义标签和标签处理类的对应关系

3 在JSP页面中,通过<%@taglib%>指令引用标签库.

4 部署web应用,访问simple.jsp即可

其中,标签处理类可以这样写,转义大于号,小于号等特殊符号。

package cn.itcast.web.jsp.tag;

import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;

//<simple:filter>标签处理类
public class FilterTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
JspFragment jspFragment = this.getJspBody();
StringWriter writer = new StringWriter();
jspFragment.invoke(writer);
String temp = writer.getBuffer().toString();
//结果必定是转义后的字符串
temp = filter(temp);
PageContext pageContext = (PageContext) this.getJspContext();
pageContext.getOut().write(temp);
}
public String filter(String message) {
        if (message == null)
            return (null);
        char content[] = new char[message.length()];
        message.getChars(0, message.length(), content, 0);
        StringBuffer result = new StringBuffer(content.length + 50);
        for (int i = 0; i < content.length; i++) {
            switch (content[i]) {
            case '<':
                result.append("&lt;");
                break;
            case '>':
                result.append("&gt;");
                break;
            case '&':
                result.append("&amp;");
                break;
            case '"':
                result.append("&quot;");
                break;
            default:
                result.append(content[i]);
            }
        }
        return (result.toString());
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-02
这个问题50分都不够的亲。自己去百度吧

java web如何防止html,js注入
开发步骤:1 写一个标签处理类 2 在\/WEB-INF\/目录下,写一个*.tld文件,目的是让Web容器知道自定义标签和标签处理类的对应关系 3 在JSP页面中,通过<%@taglib%>指令引用标签库.4 部署web应用,访问simple.jsp即可 其中,标签处理类可以这样写,转义大于号,小于号等特殊符号。package cn.itcast.w...

java web工程运行jsp正常,运行html空白
另外顺便说下,截图2里的url路径有几个问题,第一个问题Practice,url中不建议首字母大写,实际上也不推荐用驼峰命名,如果有需要驼峰命名的地方可以考虑多一个目录层级或者用‘-’连接;第二个问题,目录中出现了‘css’,一般来说在web工程中‘css’,'style','script','js',‘img’等都是有特殊...

java web工程中js应该放在那个文件下下
Java编程中建立的web工程,js文件只要在WebContent路径下即可正常编译,如果是规范的项目开发,应该是在WebContent目录下创建一个js目录,之后将对应的js文件放到此路径下,便于统一管理(但不是必须的),根据实际需要存放到对应的jsp文件路径下也是可以的。

javaweb开发如何让页面在ajax传回数据之前不能操作,网页不能操作,只能...
async代表是否异步,当你把他设置为false的时候,则非异步即同步,也就是js代码运行到这里的时候,所有的页面代码都不会加载,当ajax传回数据后,页面代码才恢复加载,在这之前符合题主的题目要求。async的默认值为true,即为异步。当然如果题主非要是异步完成所问需求的话,那么可以在执行前加一个遮罩...

如何去掉javaweb项目中没有用到的文件
肯定会没的,你设置的的上传文件目录是相对路径,也就是把文件传到你的部署在Tomcat你的项目文件中,如果可以,你可以尝试使用绝对路径,将文件上传到指定的文件夹,或者每次重新部署的时候把上传的文件拷贝出来

java、web开发都用jsp吗?
再比如,你页面要跳转,你js只能前台跳转,你的url就一定会改变,而你的jsp可以服务器跳转,url不改变.这你js就做不到.还有就是你写的东西反正要用到ajax和后台交互,用到了java,为啥jsp不一起用?你要是没有后台ajax交互,那你全部页面是html倒是没啥关系 不用jsp是可以有一些替代的,但是用的...

java网页项目中 为什么会用到htmlEncode方法去转换html元素?为了防止...
一.HTMLEncode 方法对指定的字符串应用 HTML 编码。语法 Server.HTMLEncode( string )参数 string 指定要编码的字符串。示例 脚本 <%= Server.HTMLEncode("The paragraph tag: <P>") %> 输出 The paragraph tag: <P> 注意 以上输出将被 Web 浏览器显示为 The paragraph tag: <P> 如果查看一...

我刚准备学java web,请教下大神们jsp,js,servlet,structs,spring,Hibe...
还没法给你总结。总之,先从基础学起,框架不要急着看。可以先学学jsp,尝试着用servlet+jsp+javabean做点小应用。了解了解mvc模式,然后再接触struts啊,hibernate,spring这些。至于js的话,跟java web开发没有必然的联系,java web里的ajax一般用jquery做。希望能帮到你。

java web页面,关闭浏览器,让一个操作继续执行?
服务器端的程序执行起来是没有问题,只要开始运行,跟你的浏览器直接是没有关系了,直到结果返回。我们知道,服务器端和客户端是用sessionID来关联的,发送一个请求的时候带上了这个参数,返回结果的时候根据这个ID返回到相应的客户端去。一般的,浏览器每打开一次,就会有一个sessionID,如果你的操作在...

一个javaweb项目不需要用到数据库,整个项目的数据都是调用接口来获取数...
你好 很高兴为你解答 我也是做Java的,我们就是在后台做解析,不然有些用户禁用掉JS的话,那么数据岂不是也没了。我给个例子给你看,你就明白了。第一步:创建URL 第二步:JSON接收URL返回的参 如果我说的不好,导致楼主模糊不清,请楼主追问。

相似回答