一尘不染

用Java转义html

jsp

如何确保我不会两次逃脱?

我听说,从表单接收值时转义值,并在输出时也转义是一种很好的做法。这样,您就有两次机会抓到东西。


阅读 546

收藏
2020-06-08

共1个答案

一尘不染

我认为您正在使用JSP。

仅在 显示
期间逃脱。那里的JSTL
<c:out>标签是非常合适的。默认情况下,它会转义HTML实体。使用它可以显示
每个 用户控制的输入,例如请求URL,请求标头和请求参数。

例如

<input type="text" name="foo" value="<c:out value="${param.foo}" />">

输入期间无需转义。XSS在原始Java代码和SQL数据库中均无害。另一方面,您也宁愿将未修改的数据保存在DB中,以便仍可以看到用户
实际 输入的内容,以便在必要时可以对可邮寄用户进行社交操作。

如果您想知道在输入过程中要转义的内容,那就是SQL injection。在这种情况下PreparedStatementStatement只要您想在数据库中保存
任何 用户控制的输入,只要使用而不是常规即可。

例如

create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
create.setString(1, username);
create.setString(2, password);
create.executeUpdate();
2020-06-08