html改jsp资源不存在,在JSP / JSPX中删除HTML实体:不能解决问题,甚至不存在?

1) Is there a way to do escape by default?

不是在复古JSP.默认情况下,它的继承者Facelets逃避了他们.禁用转义的唯一方法是使用< h:outputText value =“#{bean.foo}”escape =“false”/>而不是#{bean.foo}.

2) Why somebody may ever need unescaped HTML in el? Storing HTML outside of template (in database for example) is not a good practice.

然而,存储sanitized HTML通常是完成的.例如.以允许诸如< p>,< b>,< i>的无辜HTML标签的一小部分并且on *属性已经被剥离了.

3) I am sure template engine should handle it automatically (as it done in XSLT), why should user care about it? Manual escaping (fn:escapeXml) smells like SQL manual escaping (which is used instead of JDBC setParam): boilerplate code and good place for sql-injection (cross-site scripting in our case).

JSP是一种古老的视图技术.这不是一个灵活的模板引擎.

通常只需使用PreparedStatement而不是Statement(或通过使用ORM框架而不是“raw JDBC”来防止SQL注入,就像通过使用MVC框架而不是“raw JSP”可以防止XSS问题一样).

对于你的具体问题,你可以用四种方式来解决这个问题:

>咬住项目符号并替换所有EL-in-template-text,它通过fn:escapeXml()或< c:out>重新显示用户控制的输入.并教你自己和你的团队在未来注意这一点.提示,像Eclipse那样有点体面的IDE有一个基于regex的find-and-replace-in-all-files.>有一些数据库拦截器,在插入数据库之前,将恶意HTML剥离.如果需要,运行DB脚本来清理现有数据.然而,这不仅仅是一个实际的解决方案.>用自定义的代替JSP EL解析器来转义所有的HTML.但是这样做的缺点是,无论何时真正需要,您永远不会显示EL的纯HTML.>使用内置HTML转义的体面的MVC框架.然而,这不仅仅是修复各个EL表达式更多的工作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值