web安全:客户端安全和服务器安全;还有容器配置安全等;
客户端请点击:
web安全-客户端脚本安全
- nginx安全加固
- 代码控制资源权限以及参数过滤
nginx安全加固
- 限制ip访问
location / {
deny XXX . XXX . XXX . XXX;#拒绝ip
allow XXX . XXX . XXX . XXX;#允许ip
allow XXX . XXX . XXX . XXX;#允许ip
deny all ;#拒绝其他所有ip
}
- 控制超时时间
client_body_timeout 10;#设置客户端请求主体读取超时时间
client_header_timeout 10;#设置客户端请求头超时时间
keepalive_timeout 5 5;#第一个参数,保持活动超时时间。第二个:消息头保持活动有效时间(可选)
send_timeout 10;#指定响应客户端的超时时间
- 防止点击劫持
nginx处理前端请求的location域增加
add_header X-Frame-Options SAMEORIGIN;#同源策略;iframe嵌套时浏览器是否允许加载资源
- 限制host和refer
server域增加:限制host请求
if($host ! ~* "XXX . XXX . XXX . XXX | XXX . XXX . XXX . XXX"){
return 404;
}
限制refer
set $flagRf 0;
if( $http_referer ! ~ * "XXX . XXX . XXX . XXX"){
set $flagRf 1;
}
if( $http_uri ! ~ * "XXX . XXX . XXX . XXX"){
set $flagRf 2;
}
if( $flagRf ="1"){
return 404;
}
- 防止nginx版本泄露
server增加
server_tokens off;
- 删除不安全部分
location 增加
add_header "X-XSS-Protection" "1";
- 限制登陆url
set $flag=0;
if($request_uri !~ * "login.html"){
return 404;
}
- https降级
proxy_set_header Rederer http:// $host : $server_port $request_uri
代码控制资源以及参数
- cookie 只读
Cookie [] cookies = request.getCookies();
if(cookie != null){
for(Cookie cookie :cookies){
StringBuilder builder =new StringBuilder();
builder.append(coookie.getName() + "=" cookie.getValue() +";");
builder.append("Secure : ");
builder.append("HttpOnly;");//只读属性
req.addHeader("Set-Cookie",builder.toString());
}
}
- csp内容安全策略

- 过滤uri和cookie中的特殊字符
- 校验host是否在白名单

checkHost(request.getHeader("Host"));
- 校验refer是否同源

checkRefer(request.getHeader("Refer"))
- 参数xss过滤


- 设置404统一页面
避免提示信息泄露
避免跳转到无效资源
避免重定向,302,
- session标志未更新
登陆成功后,session失效并重新new一个session,更换session标志;
- sql注入
sql预编译
sql条件和参数隔离,校验后,再拼sql等
避免程序日志出现数据库特殊错误码,导致泄露sql是oracle还是其实数据库
避免出现--注释,以及or ‘1==1’等条件注释,条件恒成立等,失效sql语句
参数关键字过滤,避免生成联合sql,关联查询语句
- 验证码一次失效;
验证码一次失效,否则可能引发登陆时,利用已经验证的验证码,多次重放攻击,撞库攻击等
- 通讯加密
参数加密,响应数据加密:
1.用户名密码,敏感信息
2.响应中比如出现path,可能会造成泄露