网站安全

1,xss攻击:
用户输入的内容有脚本代码
举例:
我发表篇文章:
包含

其他用户点击我这篇文章
就会把他的cookie发到我的服务器上

防防措施:
1,用户输入的内容,做脚本过滤
2,对于不能过滤的内容进行编码转换:
  使用apache的commons-lang.jar
    StringEscapeUtils.escapeHtml(str);进行转换
    汉字会转换成对应的ascll码,空格不转换
    转义保存,然后在显示时,浏览会对这些字符转换成文本内容显示,而不是一段可执行的代码。

2,sql注入。
就是通过把sql命令插入到web表单提交,最终达到欺骗服务器执行恶意的sql命令,
执行sql的时候不是按照设计者意图去执行sql.

防御:
1,使用参数化的sql语句。
2,避免出现详细错误信息

3,跨站攻击:
使用令牌机制 form表单添加令牌

4,ddos攻击

限制同一个ip一段时间内访问次数:
http://www.nginx.cn/446.html
HttpLimitReqModul 限制某一段时间内同一个ip访问次数:
http{
    #定义一个名为allips 的limit_req_zone用来存储session,大小是10M内存
    #以$binary_remote_addr为key ,限制平均每秒请求为20个
    #1M能存储16000个状态,rate的值必须为整数,
    #如果限制两秒一个请求,可以设置成30r/m

    limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
    
    server{
        location{
        
        limit_req zone=allips burst=5 nodelay;
        }
    }
}

参数说明:
1:
$binary_remote_addr:表示通过remote_addr这个标识来做限制,"binary_"的目的是缩写内存占用量,是限制同一客户端ip地址
zone=allips:10m 标识生成一个大小为10m,名字为allips的内存区域,用来存储访问频次信息
rate=20r/s 表示允许相同标识的客户端的访问频次,这里限制每秒20次。

2:
zone=allips:设置使用哪个配置来做限制,与上面limit_req_zone里的那么对应
burst=5 :burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区,当有大量请求过来时,超过了访问频次限制的
请求可以先放到这个缓冲区内等待,再超过这个缓冲区会直接报503错误然后返回。

nodelay: 如果设置,会在瞬时提供处理burst+rate个请求的能力,请求超过(burst+rate) 的时候就会直接返回503,永远不存在请求等待的情况。
    如果没有设置,则所有请求会一次等待排队。


限制并发连接数,限速
http{

    #定义一个名为one的limit_conn_zone ,大小为10M内存来存储session,
    #以$binary_remote_addr 为key
    limit_conn_zone one $binary_remote_addr 10m;
    server{
        location{
            #限制每个ip只能发起20个连接
            limit_zone one 20;
            #带宽限制,对单个连接限速,如果一个ip两个连接,就是500k*2
            limit_rate 500k;
        }

    }


}

配在location里,对css,js ,图片等不限速,需另取一个location /img/{} 专门处理图片。

加入白名单,排除限制:
http{
  geo $limited{
    default 1;
    ip 0;
    ip 0;
    }

}


限制同一个ip 在一段时间内的访问次数:
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
limit_req zone=allips burst=5 nodelay;

burst:爆发5个等待
nodelay:不等待,立刻返回503


限制同一个ip并发连接数:
limit_conn_zone one $binary_remote_addr 10m;
limit_zone one 20;
#带宽限制,对单个连接限速,如果一个ip两个连接,就是500k*2
limit_rate 500k;


负载均衡:
upstream Test  {
        server ip:port; 
    }


    location / {
        proxy_pass  http://Test;
    }

你可能感兴趣的:(web网站安全,web安全)