修改nginx.conf以及需要加载新的模块
请参考链接提示进行配置:https://blog.csdn.net/zzhongcy/article/details/115538272
1、需要新增一个404.html 不存在的页面。Html内容写404就行
2、修改nginx.conf的 error_page 下修改
error_page 404 403 500 502 503 504 /404.html;
# 承接上面的location。
location = /404.html {
# 放错误页面的目录路径。
root /usr/local/nginx112/html/;
}
修改nginx.conf的 server 下添加
add_header X-Xss-Protection "1;mode=block";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
修改nginx.conf的server下面location配置
location ^/abc/ {
proxy_cookie_path / "/; secure; SameSite=Strict;HttpOnly;SameSite=Strict";
}
修改应用程序配置文件
如tomcat一般位web.xml,配置后重启服务
改为:
各项配置说明:
1、服务器修复方案
唯一可信的只有 SERVER_NAME,这个在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。
Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一 个SERVER_NAME名单并开启UseCanonicalName选项。
建议以上两种方法同时使用。
1.1Nginx修复方法
方案1:修改nginx.conf,添加一个默认server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。配置完成后重启nginx即可。
server {
listen 8888 default;
server_name 192.168.0.171;
location / {
return 403;
}
}
方案2:修改nginx.conf,在目标server添加检测规则,参考以下配置,配置完成后重启nginx即可。
server {
server_name 192.168.0.171;
listen 8888;
if ($http_Host !~*^192.168.0.171:8888$)
{
return 403;
}
include /etc/nginx/default.d/*.conf;
location / {
root /www/dvwa;
index index.php index.html index.htm;
}
}
1.2Apache修复方法
方案1:修改\conf\httpd.conf文件,修改ServerName为应用的域名,并开启UseCanonicalName选项配置完成后重启Apache即可:
ServerName 10.1.25.233:80
UseCanonicalName On
方案2:修改\conf\httpd.conf文件,参考以下配置添加,配置完成后重启Apache即可。配置说明:拒绝直接通过192.168.0.16这个IP的任何访问请求,这时如果你用192.168.0.16访问,会提示拒绝访问。仅允许通过www.test.com这个域名访问,主目录指向C:\www
NameVirtualHost 192.168.0.16
ServerName 192.168.0.16
Order Allow,Deny
Deny from all
DocumentRoot "C:\www"
ServerName www.test.com
方案3:修改\conf\httpd.conf文件,找到”#LoadModule rewrite_module modules/mod_rewrite.so”去除前面的”#”号,添加类似以下配置,配置完成后重启Apache即可。配置说明:当HOST头不是192.168.0.16时,重定向到错误页面
RewriteEngine on
RewriteCond %{HTTP_HOST} !^192.168.0.16$ [NC]
RewriteRule ^(.*)$ /error.html
1.3Tomcat修复方法
方案1:修改tomcat\conf\server.xml,找到以下将Host里的name修改为静态的域名,配置完成后重启Apache即可。
unpackWARs="true" autoDeploy="true"> 方案2:修改tomcat\conf\server.xml,将Host节点做如下配置: unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> prefix="localhost_access_log." suffix=".txt" resolveHosts="false" pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" /> 1.4IIS6.0修复方法:使用ISAPI_Rewrite插件对请求包内容进行检测并重写URL 1.5IIS7.0/7.5/8.0修复方法:微软推出了一款URL 重写模块工具,可对请求URL进行过滤处理 2、应用方面 在网站安装和初始化的时候,要求管理员提供一个可信任的域名白名单。如果这个实现起来比较困难,那至少也要保证使用使用getServerName()代替getHeader(“Host”)。 1、禁用所有端点,修改配置文件application.yml为以下配置: management: endpoints.enabled = false 2、若系统必须启用端点的建议配置认证,在项目的pom.xml文件下引入spring-boot-starter-security依赖: 然后在application.properties中开启security功能,配置访问账号密码(示例仅供参考),重启应用即可弹出。 management.security.enabled=true security.user.name=adminmmmm security.user.password=F!a16a< 3、升级Spring Boot的版本,由于Spring Boot < 1.5 默认未授权访问所有端点,在Spring Boot >= 1.5 默认只允许访问/health和/info端点,建议升级到SpringBootActuator2.0以上。 4、禁止互联网访问端点。 避免在内部网络中使用通配符,如果Web资源包含敏感信息,则应在Access-Control-Allow-Origin标头中正确指定来源,指定的来源只能是受信任的站点,同时避免将null列入白名单。如果不需要外部访问,请完全除去此头。 可以通过修改配置文件application.yml如下,allowed-origins中允许跨域的ip地址;allowed-methods配置允许通过的请求,还有支持时间等; management: endpoints: web: # 跨域处理 cors: allowed-origins: http://localhost:8080/ allowed-methods: post,get,put 这几类一般是处理错误信息时,响应不规范造成。 自定义错误页面或使用统一的错误页面提示。 1、对于 tomcat 的中间件下,常用修复方式如下:找到配置文件 web.xml ,修改内容,配置一个统一的静态页面,将400、403、404、500等常见报错重定向到该静态页面,而不是抛出异常(报错信息导致代码信息泄漏); 2、对于常用的jsp语言开发的网站,可在业务流程中,加入异常捕获过程中预定义的错误编码,将异常输出到错误日志中,并在前台页面返回相应的错误编码,以便应用系统运维人员进行异常排查。 3、对于 IIS/ASP.net 下设置404错误页面:修改应用程序根目录的设置,打开 “web.config” 文件编辑,加入错误提示页面及提示内容。 4、对于 apache 服务器的设置:修改 httpd.conf 文件,去掉错误提示页面的注释符“#”。 5、对于 PHP 中间件的使用者,可通过修改 php.ini 文件来实现如果关闭与开启错误信息,关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。 6、对于 J2EE 项目开发的网站,如果想通过捕获抛出的异常信息的方式来修复,可以使用使用 Spring MVC 统一异常处理的方法来进行修复。 7、编码时增加异常处理模块,对错误页面做统一的自定义返回界面,隐藏服务器版本信息; 8、不对外输出程序运行时产生的异常错误信息详情。Spring Boot Actuator 端点
CORS 策略
临时文件下载、归档文件下载、压缩文件