前段时间看《码农翻身2》时,里面讲到一部分 安全 相关的知识点很是有趣, 又想起多年前一位朋友推荐的《白帽子讲Web安全》,据说这本书是安全领域的圣经,遂跑到图书馆借了这本书,下定决心读一读。
这本书前前后后翻了一周的时间,虽然本身我不是从事安全方向的研发,但觉得有一部分知识还是对日常工作有帮助的。
1.在安全圈子里 素有 白帽 黑帽 一说, 黑帽子是指那些造成破坏的黑客,而白帽子则是研究安全,但不造成破坏的黑客。白帽子均以建设更安全的互联网为己任。
2.安全三要素:机密性Confidentiality 加密, 完整性Integrity 数字签名, 可用性Availability Dos拒绝服务攻击
3.Secure By Default原则,白名单 黑名单的思想,优先使用白名单。 最小权限原则,不过度授权。 Defense in Depth 纵深防御 从不同层面不同角度做安全方案。 数据与代码分离原则 防注入。
4.不可预测性原则, 随机值 让黑客找不到规律
5.同源策略 Same Origin Plicy, 除了浏览器 其他Flash 等也有类似的策略
6.浏览器沙箱 资源隔离类模块, 隔离资源 让病毒只在有限的环境中运行, 从而保护大部分系统的安全
7.XSS 跨站脚本攻击 Cross Site Scirpt,本来缩写是Css ,但为了和层叠样式表 Cascading Style Sheet Css区分,所以安全领域叫 Xss
8.XSS分类: 反射性(诱使人点击),存储型(恶意js的脚本存储到服务器端), DOM Based Xss(DOM节点结构被恶意修改)
9.XSS攻击角度: 恶意脚本,劫持Cookie,伪造GET POST请求,钓鱼网站界面,识别用户浏览器,识别用户安装软件,HistoryHack用户曾经访问的网站,获取用户真实IP
10.XSS构造技巧: 利用字符编码(不识别字符被吃掉),绕过长度限制(event, localtion.hash,注释符号), 通过标签,window.name
11.XSS防御: HttpOnly, 输入检查(前后端都检查), 输出检查(变量输出到html时转换)
12.正确的防御XSS: HtmlEncode,JavascriptEncode, ESAPI.encoder().encodeForCss(), ESAPI.encoder().endcodeForUrl() , Anti_Samy 最好的XssFilter
13.CSRF 跨站点请求伪造 Cross Site Request Forgery. Cookie, P3P
14.CSRF防御: 验证码,RefererCheck:发送请求时会带上Referer信息告诉服务器上从哪个界面链接过来的。 Anti CSRF Token
15.ClickJacking 点击劫持:视觉的欺骗,拖拽,图片覆盖,触屏劫持. 防御:禁止跨域的iframe,Http头 X-Frame-Options
16.跨域访问的标准: Access-Control-Allow_Origin 等
17.SQL注入, 盲注 调试, 数据库内置函数 TimingAttack。 执行命令,攻击存储过程, 编码问题。
18.预编译SQL,检查数据类型,使用安全函数 ESAPI.encoder().encodeForSQL
19.XML注入, 代码注入。 数据与代码分离原则 防注入
20.文件上传漏洞, 脚本被上传后执行。 策略:文件上传目录不可置信, 白名单判断文件类型, 随机数修改文件名和路径, 单独设置文件服务器域名
21.Authencication认证, Authorization授权。
22.密码 必须以不可逆的加密算法 或者是 单向散列函数算法 加密存储。 加Salt计算。
23.垂直权限管理, RBAC基于角色的访问控制,最小权限,默认拒绝。
24.水平权限管理, 数据的权限控制,暂时没有统一的解决方案
25.加密算法 有可能被破解掉 密钥。
26.伪随机数, 安全随机数java.security.SecureRandom
27.DDOS 分布式拒绝服务 Distributed Denial of Service, 利用合理的请求造成资源过载 ,导致服务不可用。 网络层的DDOS,专门的设备和网络供应商。
28.应用层的DDOS, 限制请求频率, 合理使用memchache, 负载均衡, 限制每个IP的请求频率, 验证码CAPTCHA Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试。 (原来有正规的缩写)。 WebServer加防御。
29.正则表达式的ReDOS 消耗大量服务器资源,导致服务性能下降, 发生回溯
30.WebServer 安全, Apache, Nginx, Tomcat(去掉默认的manager应用)