【问题标题】:significance of using c:out tag [duplicate]使用 c:out 标签的意义[重复]
【发布时间】:2015-07-12 09:36:22
【问题描述】:

我有两个jsp文件,如下所示

index.jsp

<form action="process.jsp" method="post">
FirstName:<input type="text" name="fname"/><br/>
LastName:<input type="text" name="lname"/><br/>
<input type="submit" value="submit"/>
</form>

process.jsp

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

First Name:<c:out value="${param.fname}"></c:out><br/>
Last Name:<c:out value="${param.lname}"></c:out>
</br>
First Name:${param.fname}
</br>
Last Name:${param.lname}

当我们给出一些输入时,我得到相同的输出:

First Name:nm
Last Name:nm 
First Name:nm 
Last Name:nm

所以我有点困惑,使用 c:out 标签的意义是什么? 如果我们可以在没有 c:out 的情况下做同样的工作,那么为什么我们在 JSP 中可以使用这个标签。我是 EL 新手,这就是为什么要问愚蠢的问题..

【问题讨论】:

  • 尝试将值 &lt;script&gt;alert('1');&lt;/script&gt; 分配给 param.fname 并尝试两种方法

标签: java jsp


【解决方案1】:

c:out tag 不仅打印字符,还转义 HTML 字符。从而防止可能的跨站点脚本攻击。 XSS

如果 param.fname 设置如下:

 param.fname = <script>while (true) alert("possible cross scripting attack");</script>

这个脚本会在${param.fname}的情况下执行。但是在c:out标签的情况下不会执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多