gpt4 book ai didi

java - 检索到的数据库数据出现交叉脚本错误

转载 作者:行者123 更新时间:2023-12-01 18:15:21 25 4
gpt4 key购买 nike

我在执行更新之后的语句中看到跨脚本注入(inject)错误。如何清理输出以消除跨脚本错误。我有一个简单的代码片段,它使用PreparedStatement 运行选择并返回在前端GUI 屏幕上检索到的值。

XSS 缺陷消息:“受污染的数据源自对 java.sql.ResultSetMetaData.getColumnName 的早期调用。”

Java代码:

        Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
try {
List alist= new ArrayList();
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int count = rs.getMetaData().getColumnCount();
for (int i = 1; i <= count; i++) {
alist.add(rs.getMetaData().getColumnName(i)) //Flaw seems to point to this.
}

}catch(Exception e){
//close connections
}
return alist;

完整的 Veracode 缺陷:攻击 vector : javax.servlet.jsp.JspWriter.print

受影响的模块数量:1

描述:对 javax.servlet.jsp.JspWriter.print() 的调用包含跨站点脚本 (XSS) 缺陷。该应用程序使用不受信任的输入填充 HTTP 响应,从而允许攻击者嵌入恶意内容,例如 Javascript 代码,这些内容将在受害者浏览器的上下文中执行。 XSS 漏洞通常被用来窃取或操纵 cookie、修改内容的呈现方式以及泄露 secret 信息,并且定期发现新的攻击 vector 。 print() 的第一个参数包含来自变量 getHtml() 的受污染数据。受污染的数据源自之前对 java.sql.ResultSetMetaData.getColumnName 的调用。受污染的数据被定向到 javax.servlet.jsp.JspWriter 返回的输出流中。

最佳答案

我不知道为什么 ResultSetMetaData 对象调用 servlet 方法,但如果我理解正确的话,它用于在 servlet 中打印某些内容。但是,由于 ResultSetMetaData 中的所有数据均来自数据库的元数据(不可能包含 javascript 代码或其他 XSS risc),因此在这种情况下应该保存它。

ResultSetMetaData 是一个常用的类(并且使用了很长时间),所以我真的不认为这在当前的 java 版本中是一个问题。

所以我不确定如何解决这个问题,但我很确定这不是问题,因为不可能在数据库的元数据中添加任何恶意软件代码(javascript 或 sql 注入(inject)代码)。

关于java - 检索到的数据库数据出现交叉脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60380549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com