jsp <html text xss,JSP中使用JSTL,并且解决XSS安全问题

普通的Java Web项目中使用JSTL来简化JSP, 以及使用 标签处理Cross-Site Scripting安全问题。

1. 下载JSTL必要的jar包

官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下,将 tld下的需要引入的 tld 文件复制到 WEB-INF/lib目录下。

2. 引入

在需要使用JSTL的JSP文件最开始处加入

3. 使用

Demo项目创建了2个页面,index.jsp 和welcome.jsp,以及用于接受数据的mode ---User.java

三个文件的code:

index.jsp

pageEncoding="ISO-8859-1"%>

Insert title here

index页面通过提交按钮将表单信息传到welcome页面。

welcome.jsp

pageEncoding="ISO-8859-1"%>

Insert title here

String nm = request.getParameter("name");

String pwd = request.getParameter("password");

%>

welcome.jsp接收index页面传递过来得方式有两种

User.java

public class User {

private String name;

private String password;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

1、User bean接收

property的值需要和index.jsp中输入框的name值对应。

2、通过变量接收

String nm = request.getParameter("name");

String pwd = request.getParameter("password");

jsp中嵌套的java code,将request中的参数存到两个变量中(nm, pwd)

那么如何将index页面传递过来的参数显示呢?

1、EL表达式

${xxx}

2、标签

直接输出到页面

将值填充到输出框中

"/>" />

" />

但是为什么EL表达式中不直接用nm变量?因为${nm}拿到的值为null。

EL表达式中的内容必须在PageScope、RequestScope、SessionScope、ApplicationScope四个范围之一,才能取到值。

而nm定义在Java中,属于局部变量。

3、标签

4、

或者

但是和这两种输出方式是有区别的,即:输出内容中含html或者js标签时,前者会影响html页面格式或者执行js内容,后者会直接输出,不会影响页面和执行js

例如:

输入

a4e8e2f3b4c643796d3b50754c40bf54.png

, welcome页面会出现弹框

c914af8f612e30afb7ab4fe3fa74c765.png

而就不会,而是直接输出内容,不执行js。

4f266931fdb10fcc106c57e92f1684be.png

因此,JSTL的标签可以用来处理Cross-Site Scripting 安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值