我正在为我的应用程序使用 React js。
在 Fortify Web 检查扫描期间,我遇到了一些与缺少 http 标头相关的问题。 请注意,我已经应用了必要的标头。
现在,在详细描述这些问题时,他们提到,当收到 403 Forbidden 或 405 Not allowed Nginx 响应时,http 标头不存在。
对于前。 Web 检查试图攻击像 www.xyz.com/static/
这里的static文件夹是包含js和css文件夹的文件夹,用来保存bundle文件。 (参考build文件夹)
当我们尝试通过浏览器或邮递员访问此静态文件夹时,它将从 nginx 服务器返回 403 响应。
因此,与此 Web 检查相同,它将尝试通过访问静态文件夹进行攻击,它会收到 403 Forbidden,这是 Nginx 响应,并且由于标头未应用于它。因此,它作为一个问题再次出现。
405 响应也是如此,Web 检查正在尝试使用 OPTIONS 方法访问类似 www.xyz.com/ 的内容,作为回报,它会得到 405 Nginx 响应,该响应没有应用 http 标头。因此,它再次成为一个问题。
为了解决这个问题,我在 nginx.config 文件中应用了以下代码,
.....
server {
add_header X-Frame-Options "SAMEORIGIN"
add_headed Pragma "no-cache";
......
error_page 403 =200 @custom_403
location @custom_403 {
return 200 "
<html>
<body>
403 Forbidden
<body>
</html>
";
}
error_page 405 =200 @custom_405
location @custom_405 {
return 200 "
<html>
<body>
405 Not Allowed
<body>
</html>
";
}
使用上面的代码,所有问题都已解决,但我只是想检查一下安全性是否安全?
或者是否有其他方法可以在响应上设置 http 标头,例如 403 和 405(这是默认的 nginx 响应)。
提前致谢。
更合适的方法是在
always
指令上使用 add_header
标志:
add_header X-Frame-Options "SAMEORIGIN" always;
参考:https://nginx.org/en/docs/http/ngx_http_headers_module.html