一、Web攻击
1.表单数据泄漏攻击
解决:不用GET用POST提交表单数据;且对数据进行加密;
2.文件上传
解决:验证上传文件的后缀和限制上传文件的种类(基础);让存放用户上传的文件的目录没有执行权限,脚本不能执行(中级)
3.XSS(跨站脚本攻击)
确保输出到HTML页面的数据以HTML的方式被转义
4.SQL注入
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双”-“进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
5.跨站请求伪造攻击(CSRF)
攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。
解决:
1.采用POST请求,增加攻击的难度.
2.对请求进行验证
6.Http Heads攻击
解决:过滤所有的response headers,除去header中出现的非法字符,尤其是CRLF。
7.Cookie攻击
HttpOnly的标记
8.重定向攻击
解决:白名单,将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之,第二种解决方案是重定向token,在合法的url上加上token,重定向时进行验证.
9.ddos攻击
大量假流量
解决:
1.网站服务器只开放80端口,其他所有端口都关闭,即在防火墙上做阻止策略。
2.检查访问者ip是否是真实ip,使用Unicast Reverse-Path-Forwarding等反向路由器查询检查访问者ip是否真实。
二、数据库相关
MySQL读写分离实现:
- 读写分离就是只在主服务器上写,只在从服务上读;
- 主数据库处理事务性查询,从数据库处理 select 查询;
- 数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库
三、通信加密
1.RSA
RSA就是公钥密码体制,包含一个公钥和一个私钥,以及公开的加密算法。
RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
缺点:速度慢
https://baike.baidu.com/item/RSA%E7%AE%97%E6%B3%95/263310?fromtitle=RSA&fromid=210678&fr=aladdin
2.SSL