我们使用nginx进行https流量卸载,代理到在端口8080上运行的本地安装的jasperserver(5.2).
internet ---(https/443)---> nginx ---(http/8080)---> tomcat/jasperserver
Run Code Online (Sandbox Code Playgroud)
当直接在其端口上访问jasperserver时,一切都很好.当通过nginx访问服务时,某些功能被破坏(例如,在jasperserver UI中编辑用户),jasperserver日志具有如下条目:
CSRFGuard: potential cross-site request forgery (CSRF) attack thwarted (user:%user%, ip:%remote_ip%, uri:%request_uri%, error:%exception_message%)
Run Code Online (Sandbox Code Playgroud)
经过一些调试后,我们找到了原因:
在其标准配置中,nginx不转发其名称中包含下划线的请求标头.然而,Jasperserver(和OWASP框架)默认使用下划线来传输csrf令牌(JASPER_CSRF_TOKEN
和OWASP_CSRFTOKEN
分别).
解决方案是:
nginx:允许标题中的下划线
server {
...
underscores_in_headers on;
Run Code Online (Sandbox Code Playgroud)jasperserver-pro/WEB-INF/esapi/Owasp.CsrfGuard.properties
另见:
我正在尝试处理Java Web应用程序的点击劫持。我从Clickjacking防御备忘单中得到了一个解决方案
我在中添加了一个过滤器 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>OWASP ClickjackFilter</display-name>
<filter>
<filter-name>ClickjackFilterDeny</filter-name>
<filter-class>org.owasp.filters.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<filter-class>org.owasp.filters.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
<!-- use the Deny version to prevent anyone, including yourself, from framing the page -->
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我的过滤器类看起来像
package org.owasp.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class ClickjackFilter implements Filter
{
private …
Run Code Online (Sandbox Code Playgroud) 我正在使用OWASP Html Sanitizer来防止对我的网络应用程序进行XSS攻击.对于许多应该是纯文本的字段,Sanitizer的效果超出了我的预期.
例如:
HtmlPolicyBuilder htmlPolicyBuilder = new HtmlPolicyBuilder();
stripAllTagsPolicy = htmlPolicyBuilder.toFactory();
stripAllTagsPolicy.sanitize('a+b'); // return a+b
stripAllTagsPolicy.sanitize('foo@example.com'); // return foo@example.com
Run Code Online (Sandbox Code Playgroud)
当我有字段,如电子邮件地址有+
它如foo+bar@gmail.com
我结束了在数据库中的错误数据.所以有两个问题:
+ - @
他们真的需要编码这些危险的角色吗?问题2对我来说是更重要的答案.
当检测到跨站点请求伪造(CSRF)时,我应该回复什么响应?
有一个扫描工具,我无法控制,这是说我的一个页面没有受到保护CSRF
.但它是.我发回的响应是正常的202
,句子"请求不能被处理".就是这样,没有任何信息被发送回攻击者,我记录了尝试.但是这个软件说它仍然容易受到影响CSRF
.我可以很容易地自己运行测试并弄清楚但是在扫描和测试之间需要很长时间才能得到相同的软件,这就是我要求stackoverflow的原因,所以我希望能在下一次计划的扫描中将其删除.我正在考虑发送一个statusCode 404
或410
代替一个202
. http://www.cfgears.com/index.cfm/2009/8/11/cfheader-404-status-codes-and-why-you-shouldnt-use-them
在CSRF
检测到a时,您建议发回什么?
我正在评估我的Web应用程序的安全性.当我在我的Web应用程序中使用Spring时,我想利用Spring Security框架.我搜索了有关网络安全的更多信息,并遇到了OWASP社区,它是十大攻击列表.所以我的问题是; 将Spring Security配置为保护我的应用程序是否足够?OWASP排名前十(2013)的所有安全威胁是由Spring Security Framework处理的?
我对Java的安全模型几乎一无所知,包括XML配置,策略设置,任何安全框架组件,工具(如密钥库等)以及介于两者之间的所有内容.
虽然我知道它最终将成为必不可少的,我挽起衣袖和学习深入Java安全,我在想,如果使用类似阿帕奇四郎将有助于缓解过渡一下.因此,我对它有一些担忧.
Shiro本质上是用于在Java应用程序(尤其是Web应用程序)中实现安全性的"交钥匙,捕获包装器".意思是,可以用他们的项目配置Shiro并且基本上调整它做所有相同的配置,策略设置等,一个人必须"手动"(零碎)没有它吗?如果没有,那么Shiro有什么缺点(Shiro不能为我做些什么重要事情)?是否存在Shiro根本没有解决的任何大漏洞?
同样,我听说过OWASP的ESAPI框架.Aybody有两种经验吗?ESAPI和Shiro可以配置为一起工作还是仅仅是二进制"一个或另一个"类型的交易?
提前致谢!
我正在寻找Magento的自定义表格.我看过这些教程
我没有看到任何关于CSRF预防的提及,比如使用存储在用户会话中的客户端令牌来检查客户端令牌.我也查看了Magento联系我们表格,看到了这个,但我不认为它与CSRF有关:
<input type="text" name="hideit" id="hideit" value="" style="display:none !important;">
Run Code Online (Sandbox Code Playgroud)
Magento有没有防止CSRF的默认代码?Mage_Core_Controller_Front_Action的$ this-> getRequest() - > getParams()方法是否自动执行任何操作以防止我可能丢失的CSRF?
OWASP的XSS Filter Evasion Cheat Sheet提到"&JavaScript includes":
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#.26_JavaScript_includes
它提供的示例如下:
<BR SIZE="&{alert('XSS')}">
Run Code Online (Sandbox Code Playgroud)
我在jsfiddle上尝试使用Chrome和Firefox,但我没有获得JS弹出窗口.那么应该在哪些浏览器/版本上工作呢?
网址:
我正在开发一个 salesforce 应用程序,该应用程序在 salesforce 页面的 iframe 内呈现。使用 Node Express 服务器来渲染此页面。作为安全审查的一部分,我只想在 salesforce 页面中呈现,如果嵌入到其他地方则阻止。
为此,我添加了内容安全策略标头,如下所示:
response.header("Content-Security-Policy", "frame-ancestors salesforce.com");
但它在 salesforce 页面上也被阻止。
错误 :
拒绝在框架中显示“ https://localhost:8000/authenticate ”,因为祖先违反了以下内容安全策略指令:“frame-ancestors salesforce.com”。*
我的 iframe 渲染的 salesforce 应用程序网址:https://ap4.salesforce.com/0016F00001vmoMu
我尝试按照*.salesforce.com
指令给出域名。但它也不起作用。
有人可以帮助我哪里做错了吗?
我的 CI 构建在 OWASP 依赖项检查中失败。例如
[HIGH] CVE-2021-37136 - io.netty:netty-codec-4.1.66.Final
Run Code Online (Sandbox Code Playgroud)
我知道我可以添加抑制来owaspDependencyCheckSuppressions.xml
解决这个问题。
这是我以前没有做过的事情,但这里有一个指南 - https://jeremylong.github.io/DependencyCheck/general/suppression.html 上面写着......
“使用 HTML 报告抑制这些误报相当容易。在报告中,每个已识别的 CPE 旁边(以及 CVE 条目上)都有一个抑制按钮。单击抑制按钮将创建一个对话框,您可以简单地按 Control-C复制要放入抑制 XML 文件中的 XML”
我有 2 个问题
#1 你知道我在哪里可以找到这份 HTML 报告吗?我认为它可能在 CI 中链接(我正在使用 Circle CI),但我在那里找不到它:(
#2 指南中给出了抑制示例
<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
<suppress>
<notes><![CDATA[
file name: some.jar
]]></notes>
<sha1>66734244CE86857018B023A8C56AE0635C56B6A1</sha1>
<cpe>cpe:/a:apache:struts:2.0.0</cpe>
</suppress>
</suppressions>
Run Code Online (Sandbox Code Playgroud)
指南接着说
“上面的 XML 文件将抑制任何具有匹配 SHA1 哈希值的文件中的 cpe:/a:apache:struts:2.0.0。”
“任何文件”是什么意思?这是否意味着任何使用依赖关系的 Java 类?
谢谢 :)
owasp ×10
security ×5
java ×4
csrf ×3
javascript ×2
xss ×2
apache ×1
clickjacking ×1
coldfusion ×1
jasperserver ×1
jsp ×1
magento ×1
nginx ×1
node.js ×1
php ×1
proxy ×1
sanitization ×1
shiro ×1
suppression ×1