Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在保存到数据库之前,如何在JSP中转义html?_Java_Database_Jsp_Escaping - Fatal编程技术网

Java 在保存到数据库之前,如何在JSP中转义html?

Java 在保存到数据库之前,如何在JSP中转义html?,java,database,jsp,escaping,Java,Database,Jsp,Escaping,我现在正在学习JSP和Java,并编写了一个(非常)简单的留言簿来开始使用JSP。但是我想确保没有人可以使用CSS,所以我需要在将HTML代码保存到我的mySQL数据库之前去掉它。我已经在这里搜索过了,找到了“ PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (ID, ?, ?)"); pStmt.setString(1, request.getParameter("sender"));

我现在正在学习JSP和Java,并编写了一个(非常)简单的留言簿来开始使用JSP。但是我想确保没有人可以使用CSS,所以我需要在将HTML代码保存到我的mySQL数据库之前去掉它。我已经在这里搜索过了,找到了“
  PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test VALUES (ID, ?, ?)");

  pStmt.setString(1, request.getParameter("sender"));
  pStmt.setString(2, request.getParameter("text"));
  pStmt.executeUpdate();

那么,正确的方法是什么呢?

出于安全目的,您需要对HTML进行转义,例如防止跨站点脚本攻击(XSS)

有关更多详细信息,请在Google/Stack Overflow上搜索跨站点脚本

将有几个开源的Servet过滤器可以为您实现这一点


e、 g.请参阅以获取解释。通常的做法是相反的。我们保存
文本区域中的所有内容,并在显示时使用
标记的
escapeXML
属性。这样,所有CSS、HTML标记都将被视为简单文本。

简短回答:查看

更详细的回答:转义HTML是表示代码的工作,而不是数据库代码。如果出于某种原因,您希望在非web环境(如经典GUI)中的某个点显示数据,该怎么办?您必须取消整个事件的显示,否则它将显示全部垃圾

只需将数据原封不动地保存,并确保在显示数据之前立即从用户那里转义所有内容(好的,可能不是以数字形式存储的数字,但您明白了)


如果您使用的是AJAX,那么您可以更进一步,只在JavaScript中转义字符串(或使用innerText)。

您还可以使用JSTL函数:fn:escapeXml()


...   

您还可以使用JSTL核心库

c:out默认打开了escapeXml

示例:

<c:out value="${tp.title}" />

<c:out value="${product.listPrice}" escapeXml="false" /> //if you want turn off

//如果你想关掉它

这种方法可以让您按照其他人的建议在表示层中进行转义。

您的意思是这样的吗?听起来不错,而且我没有放弃用户可以使用“”和“”之类的功能。谢谢,这正是我想要的。此外,我将尝试在前端而不是db中实现转义。
<c:out value="${tp.title}" />

<c:out value="${product.listPrice}" escapeXml="false" /> //if you want turn off