攻击向量:java.io.PrintWriter.write
说明:此对 java.io.打印编写器.write() 的调用包含一个跨站点脚本 (XSS) 缺陷。应用程序使用用户提供的输入填充 HTTP 响应,允许攻击者嵌入恶意内容,例如 Javascript 代码,这些内容将在受害者浏览器的上下文中执行。XSS漏洞通常被利用来窃取或操纵cookie,修改内容的呈现方式以及破坏机密信息,并定期发现新的攻击媒介。要 write() 的第一个参数包含受污染的数据。受污染的数据源自之前对 javax.servletrequest.getparameter 的调用。受污染的数据被定向到由组织返回的输出流中。
它位于writer.write(arg1)的代码第一个参数中..请帮我解决这个问题
我认为这指的是这样一个事实,即您可以使用未经净化的用户输入。
例如,在下面简化的servlet中,用户可以通过传入参数来打印自己的名字。
http://xxx/servlet/vulnerable?someuserinput=Bob
但是假设一个攻击者通过电子邮件发送了一个链接,链接中包含一些讨厌的内容。
http://xxx/servlet/vulnerable?someuserinput=alert(“你好!我正在做一些令人讨厌的事情!!“);
经验法则总是清理您的输入
@WebServlet(name = "vulnerable", urlPatterns = {"/vulnerable"})
public class NewServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String someUserInput = request.getParameter("someuserinput");
try (PrintWriter out = response.getWriter()) {
out.write("<!DOCTYPE html>");
out.write("<html>");
out.write("<head>");
out.write("</head>");
out.write("<body>");
out.write("<h1>Hello " + someUserInput + "</h1>");//something bad can happen here
out.write("</body>");
out.write("</html>");
}
}
我知道你问的是ESAPI,但OWASP有HTML简单的消毒剂。
https://github.com/OWASP/java-html-sanitizer
HTML环境中的ESAPI(如上)
String safer = ESAPI.encoder().encodeForHTML( request.getParameter( "someuserinput" ) );
Javascript上下文中的ESAPI
String safer = ESAPI.encoder().encodeForJavaScript( request.getParameter( "someuserinput" ) );
OWASP ESAPI for Java: 为Java开发人员提供强力且简单的安全控制。 OWASP ESAPI (OWASP企业级安全API)是一个自由开源的web程序安全控制库,它可以让程序员很容易的写出低风险的程序。The ESAPI for Java library is 旨在让程序员很容易的改进现有程序的安全。 ESAPI for Java 也为新的开发奠定了坚实的基础。 更多信息,请访
我正在尝试通过使用 ESAPI 覆盖()来覆盖 ESAPI OWASP 库中的现有方法。不知何故它不起作用,你知道为什么吗? 这是我的代码:
我正在对我的Java代码执行veracode扫描,它在我的一个DAO类中抛出了以下错误 SQL命令中使用的特殊元素的不正确中和(“SQL注入”)CWE ID 89 然而,我试图使用OWASP来减轻这种情况。ESAPI库,因为我不能使用参数化的输入来构造我的查询,因为我使用的是字符串生成器。以下是我正在尝试的示例代码 有人能帮忙吗?
我们正在将ESAPI2.x(owasp java安全库)添加到一个应用程序中。 有人能展示一个通过使用规范化来防止的攻击样本吗??(爪哇语) 谢谢!
在我当前的项目中,我正在使用Maven和Spring。我目前正在使用SLF4J记录器来记录服务。代替它,我想使用OWASP-ESAPI记录器。我不想使用安全性,只是日志服务。有人能指导我如何使用记录器,用最少的努力替换slf4j记录器吗?我尝试了很多谷歌搜索,但没有任何帮助。我也会非常感谢一些链接来获得有关记录器的知识。
在一个web项目中,我们使用ESAPI验证器来检测XSS攻击。虽然大多数攻击都如预期的那样被检测到,但它无法将下面给定的输入检测为XSS攻击。 浏览器可能会关闭标记本身,从而触发警报功能。 后端是用Java编写的,UI是用JavaScript编写的。使用的反堕胎文件: https://github.com/owasp/ejsf/blob/master/esapi_master_full/antis