1. 浏览器安全
    1. 同源策略:浏览器的同源策略限制了不同来源的“document”或脚本,对当前的“document”读取或设置某些属性。是浏览器安全的基础,即限制不同域的网址脚本交互
    2. <script><img><iframe><link>可以跨域加载资源
    3. 在AJAX应用中,XMLHttpRequest受到同源策略的影响,不能进行跨域访问资源。cookie ,DOM也会
    4. 采用Sandbox技术,可以让不信任的网页代码,js代码运行在一个受限制的环境,从而保护本地桌面系统的安全
  2. 跨站脚本攻击(XSS)
    1. XSS攻击通过“HTML注入”篡改网页,插入恶意脚本,从而在用户浏览网页时控制浏览器的一种攻击。
    2. 反射型XSS:诱导用户点击恶意链接,将数据“反射”给浏览器,“非持久型XSS”
    3. 存储型XSS:把用户输入的数据存储在服务端。黑客将写一篇含有恶意代码的的博客发表后存在服务器里,访问改博客的用户会自动执行恶意代码
    4. DOM Based XSS:通过修改DOM节点形成的XSS,比如对用户输入的值进行显示,在显示的地方插入对应的标签,屏蔽掉旧的标签,构造新的事件。也可以通过注释!
    5. XSS攻击
      1. XSS Payload:XSS攻击后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本控制用户的浏览器,这种用于完成各种具体功能的恶意脚本称为XSS Payload
        1. 读取浏览器中的Cookie对象,从而发起Cookie劫持,伪造链接发送用户的document.cookie到远程服务器,然后打开相同的网站,更改本地cookie,从而进行免密码登录。在Set-Cookie时给关键的Cookie植入HttpOnly可以防止Cookie劫持,或者将Cokie与ip结合也可以提高安全性
        2. 构造GET与POST请求:攻击者在用户的页面通过插入一张图片进而发起GET请求,让用户执行某一个任务,例如删除。post的话可以构造form表单使之自动提交,或者通过XMLHttpRequest发送一个POST请求(因为是在用户对当前页面的操作,所以属于同源的)
      2. XSS钓鱼:伪造页面骗取用户输入密码后发到远程服务器
      3. 识别用户的浏览器:usersAgent对象或分辨浏览器之间的差别,准确的判断浏览器的版本
      4. 如果客户端安装了java可以通过调用JavaApplet的接口获取客户端本地ip
      5. 攻击平台:Attack API,BeEF,XSS-Proxy,
    6. js调试工具:FrieBug,IE 8 Developer Tools,Fiddler,HttpWatch,
    7. XSS构造技巧:
      1. 利用字符编码,
      2. 利用注释符绕过长度限制,
      3. 通过<base>劫持页面中的所有的相对路径
      4. 巧用window.name实现跨域传递
  3. XSS防御
    1. HttpOnly  在Set-Cookie添加,防止cookie劫持
    2. 输入检查
    3. 输出编码
    4. 防御DOMBasedXSS应注意js输出到html页面的必经之路,如document.write(),xxx.innerHTML()等等,以及页面的inputs框,XMLHTTPrequest返回的数据,window.name,localstorage等
  4. 跨站点请求伪造(CSRF)
    1. CSRF攻击本质原因,重要操作的所有参数都是可以被攻击者猜测到的,预测出URL,利用用户的身份操作账户。
    2. 使用Img标签,地址指向要删除的链接,诱导用户访问你的页面,让系统自动加载“链接”,导致跨站请求成功,文章删除,cookie策略
    3. p3p头可以改变隐私策略,允许跨域访问隐私数据,从而跨域Set-cookie成功
    4. 防御:验证码,Referer Check(并非什么时候服务器·都能获取Referer),加密URL参数,Anti CSRF Token(添加随机数作为参数)
    5. Token是根据“不可预测原则”设计的方案,一定要够随机才能确保安全性,存在本地的Token可以考虑生成多个。Token尽量放在表单中,用post提交。对XSS无效
  5. 点击劫持
    1. 一种视觉欺诈,构造一个透明、不可见的页面覆盖在一个网页(iframe)上,通过调整位置,覆盖在某些功能键上诱使用户点击
    2. Flash点击劫持,图片覆盖攻击,拖拽劫持与数据窃取,触屏劫持
    3. 防御:
      1. frame busting禁止iframe嵌套。
      2. http头 X-Frame-Options,值为DENY拒绝页面加载任何frame页面,SAMEORIGIN表示允许同源frame加载,ALLOW-FROM可以定义允许frame加载的地址。
      3. 对抗CRLF方案只需在“view”中编码所有\r\n,
  6. HTML5安全:
    1. 新标签的XSS
    2. iframe的sandbox新属性
    3. Canvas识别验证码
  7. 服务器端应用安全
    1. sql注入攻击:把用户输入的数据当作代码执行,条件一,用户能控制输入。条件二,原本程序要执行代码拼接了用户输入的数据
      1. SQL注入:通过用户输入的数据,更改系统原本的sql语句的想法,进行数据库操作。也就是说数据输入没有进行合法性判断,导致攻击者可以构造不同的sql语句实现对数据库任意操作。
        1. 盲注:当攻击者进行sql攻击时,由于系统没有开启错误回显,意味着攻击者缺少了一个调试工具。但是攻击时可以采用简单的条件判断,再对比页面结果的差异就判断出SQL注入漏洞是否存在(and 1=2,and1=1)
          1. Timing Attack:利用类似MYSQL数据库中BENCHMARK()函数,可以让同一个一个函数执行若干次,使得结果返回的时间比平时要长,通过时间长短的变化,可以判断注入语句的执行是否成功,这是一种边信道攻击
        2. 自动注入工具:sqlmap
        3. 防御:使用预编译语句绑定变量,避免使用动态sql语句,检查输入数据的类型,使用安全函数,遵守数据代码分离原则
      2. MYSQL注入相关
        1. 5.0版本后默认存在information_schema数据库 ,SCHEMATA表包含创建的数据库名,字段为SCHEMA_NAME,TABLES表存出用户创建的所有数据库的库名和表名 字段为TABLE_SCHEMA和TABLE_NAME,COLUMNS表存储用户创建的库名,表名,字段名 ,其对应TABLE_SCHEMA和TABLE_NAME和COLUMN_NAME
        2. 查询语句
          1. SELECT 要查询的字段名 FROM 库名,表名
          2. SELECT 要查询的字段名 FROM 库名,表名 WHERE 已知字段=‘已知条件的值’
          3. SELECT 要查询的字段名 FROM 库名,表名 WHERE 已知字段=‘已知条件的值’AND 已知字段=‘已知条件的值’
        3. limit m,n m表示开始的位置,n表示结束位置,可以限制查询区域
        4. database()当前网站使用的数据库,version()当前数据库的版本,user()当前Mysql的用户。
        5. 注释符 #或--空格或/**/,sql内联注释/*!code !*/
    2. 文件上传漏洞:上传web脚本能够被服务器解析的问题,也就是webshell的问题
      1. 条件:上传的文件能被web容器解释执行。用户能够通过web访问。上传的文件不被安全检查、格式化等更改内容
      2. 利用终止字符更改文件类型绕过文件上传检查功能 0x00 列如文件限制ipg上传 xxx.php[\0].jpg
      3. 伪造文件,MIMESniff利用文件的前256个字节判断类型,攻击者通过伪造文件头绕过检查。
      4. Apache文件解析问题,从后向前解析文件后缀,直到认识类型为止,XXX.php.rar.rar.rar为php文件,在Apache的mime.types文件中可查看它认识的
      5. iis文件解析问题:IIs6中截断字符为“;”。通过OPTIONS方法探测服务器http中是否支持put和move,如果支持则可以上传指定文件后通过MOVE改写为脚本文件。注意iis服务器中勾选“脚本资源访问”发生put问题。
      6. 防御:
        1. 文件上上传目录设置为不可执行,防止服务器受影响
        2. 判断文件类型设置白名单,对于图片可以采用压缩函数或者resize函数进行处理,可以破坏图片中可能包含的html代码
        3. 使用随机数改写文件名和文件路径
        4. 单独设置文件服务器的域名
  8. 密码设置要求
    1. 普通应用为6位以上
    2. 重要应用为8位以上,并考虑双重认证
    3. 区分大小写
    4. 密码为大写字母,小写字母,数字,特殊符号两种以上的组合
    5. 不能有连续性字符 1234
    6. 避免出现多个重复字符 111
    7. 不要使用公开数据,比如生日,身份证号码等
    8. 密码必须以不可逆的加密算法,或者是单向散列函数算法加密后存储在数据库中,即使是管理员也看不到密码。哈希,md5,sha-1 。
    9. 现普遍使用在加密密码添加一个“Salt”随机字符串再加密,以增加明文密码的复杂度。防止彩虹表嗅探到
  9. 访问控制:建立用户与权限之间的关系
    1. RBAC(垂直权限管理):将用户分成不同的角色,赋予不同的权限。spring security中的权限管理就是一个RBAC的实现。
    2. 在配置权限时应当使用“最小权限原则”,使用默认拒绝的策略,对有需要的主体单独配置允许,避免越权访问
    3. OAuth:对第三方网站的授权
  10. 加密算法与随机数
    1. 流密码:基于异或操作进行的,每次只操作一个字节,但是性能非常好。RC4,ORYX,SEAL
    2. 流密码使用同一密钥多次加密会导致密码变得特别简单,存在“Reused Key Attack”和“Bit-flipping Attack”等攻击方式,以及WEP密钥破解
    3. 密码系统的安全性依赖与密钥的复杂性,而不是算法的保密性
    4. 不要使用ECB模式
    5. 不要使用流密码
    6. 使用HMAC-SHAI代替md5,甚至代替SHAL
    7. 不要使用形同的key做不同的事
    8. 不要自己实现加密算法,尽量使用安全专家已经实现好的库
    9. 不知如何选择时:
      1. 使用CBC模式的AE256用于加密
      2. 使用HMAC-SHA512用于完整性检查
      3. 使用带salt的SH-256或SHA-512用于Hashing
  11. MVC框架的安全:在正确的地方做正确的事情
    1. 在View层解决XSS问题:针对不同情景使用不同的编码进行防御
  12. WEB框架与CSRF防御
    1. csrf针对的是构造url对数据进行增删改,而查却没有意义,在开发中应对读写操作予以区分,比如所有写操作使用HTTP POST,并添加token
    2. 在session中绑定token,如果不能存在服务器,也可以是在cookie
    3. 在表单自动填入token字段
    4. 在Ajax请求中自动添加token
    5. 在服务器端验证提交的token与session中的token是否一致,判断是否是CSRF攻击
  13. 管理好跳转目的地址
    1. 如果web框架提供统一的跳转函数,则可以在函数内部设置白名单,指定跳转地址只能在白名单中
    2. 控制http的location字段,限制location的值只能是哪些地址,本质也是设置白名单
  14. DDos攻击:利用合理的请求造成资源过载,导致服务不可用
    1. SYNflood:伪造大量的源ip地址,分别向服务器端发送大量的SYn包。因为服务器返回SYN/ACK包后会等待回应,但ip是伪造的,没有回应,服务器会重试3-5次并等待,到超时才丢弃链接,攻击者利用发送大量的伪造地址SYN请求,消耗服务器大量的资源来处理这种半连接,导致拒绝服务
      1. 防御:SYNcookie/SYN Proxy 、safereset等算法
      2. SYNcookie:为每一个ip分配一个“cookie”,并统计访问频率。短时间内收到大量来这同一个ip的数据包则认为受到攻击,之后来自这个ip地址的数据包将被丢弃
    2. 应用层DDoscc攻击:对一些消耗资源较大的应用页面不断发起正常请求,已达到消耗服务端资源为目的,查数据库,读写文件都会消耗比较多的资源
      1. 防御:
        1. 针对每一个客户端做一个请求频率的限制。通过IP地址和cookie定位一个客户端,如果客户端在短时间内频繁发请求,则后将改客户端的所有请求重定向到一个出错的页面
        2. 攻击者可以通过变换ip地址,清空cookie绕过防御
          1. 代理猎手是一个常用的搜索代理服务器的工具
          2. AccessDive自动变换ip地址攻击,可以批量导入代理服务器地址,然后通过代理服务器在线破解用户名密码
        3. 应用代码要做好性能优化,合理使用mencache。
        4. 在网络架构上做好优化,善于利用负载均衡分流,利用好CDN和镜像站点的分流作用
    3. SLOWLORIS攻击:以极低的速度往浏览器发送HTTP请求。恶意占用链接,web Server对于并发连接的数量有限,从而导致无法接受新的请求,拒绝服务。构造畸形的HTTP包头实现
      1. 本质是对有限的资源无限乱用,对有限的连接数进行占用
      2. HTTP POST DOS:发送HTTP post包时,指定一个很大的Conten-length值,然后以很低的速度进行发包

转载于:https://www.cnblogs.com/niliuxiaocheng/p/11389402.html

《白帽子讲web安全》——吴瀚清 阅读笔记相关推荐

  1. 《白帽子讲Web安全 -- 纪念版 吴翰清著》读后随笔

    <白帽子讲Web安全 – 纪念版 吴翰清著> 该书大多数内容举例大多数是2010年左右的 相隔11年左右, 但是内容并没有被淘汰, 感觉很适合入门, 因为内容详细且比较基础 当然, 这只是 ...

  2. 白帽子讲Web安全(纪念版)

    作者:吴翰清 出版社: 电子工业出版社 品牌:博文视点 出版时间:2021-05-01 白帽子讲Web安全(纪念版)

  3. 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 前排提醒:文末有pdf领取 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 ...

  4. 《白帽子讲Web安全》学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  5. 学习web安全,强烈推荐这本《白帽子讲web安全》!

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 XSS跨站脚本攻击,通常指 ...

  6. 分享笔记1 之《白帽子讲web安全》

    分享笔记1 之<白帽子讲web安全> 目录 第一篇 世界观安全 第1章 我的安全世界观 2 1.1 web安全简史 2 1.1.1 中国黑客简史 2 1.1.2 黑客技术的发展历程 3 1 ...

  7. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

  8. 读《白帽子讲Web安全》之客户端脚本安全(一)

    2019独角兽企业重金招聘Python工程师标准>>> [第2章  浏览器安全] 1.同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能. ...

  9. 读白帽子讲WEB安全,摘要

    读<白帽子讲WEB安全>摘要 文章目录 我的安全世界观 安全三要素-CIA 如何实施安全评估 白帽子兵法 客户端安全 浏览器安全 同源策略 浏览器沙箱 恶意网址拦截 高速发展的浏览器安全 ...

最新文章

  1. NYOJ 905 卡片游戏
  2. 数据库事务原理详解-事务的嵌套
  3. 随机森林和gbdt结合_决策树与迭代决策树(GBDT)
  4. Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...
  5. python语言中split-python中的split()函数和os.path.split()函数使用详解
  6. Hadoop生态圈-Hbase的API常见操作
  7. (72)加法器设计(全加器)
  8. 余承东:华为腕上穿戴设备市场份额已达全球第一
  9. LINUX系统用户操作命令
  10. Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
  11. Codeforces Round #366 (Div. 1):Ant Man(贪心)
  12. Java SE书籍推荐
  13. 安居客 Android 项目架构演进
  14. 投票统计器用单片机c语言编写,基于51单片机的投票器毕业论文.doc
  15. 完成20亿元D轮融资,明略数据升级为明略科技集团
  16. 操作系统的作用及基本特性
  17. myeclipse误删文件恢复
  18. 关于Anaconda(Miniconda)虚拟环境中的包的问题pkgs
  19. python调用浏览器内核_python做个谷歌内核浏览器
  20. 生成对抗网络——原理解释和数学推导

热门文章

  1. 有符号数和无符号数之间的转换
  2. win10计算机系统盘不足,升级win10失败提示“系统盘剩余空间不足”怎么解决
  3. C++语言程序设计第五版 - 郑莉(第九章课后习题)
  4. 金算盘导出oracle,金算盘导出excle_金蝶财务软件的报表如何导出excle文件?
  5. ISO文件解析(转)
  6. media recovery oracle,oracle 数据块损坏 Oracle 数据块损坏与恢复详解
  7. 硬件工程师专业术语解释
  8. 西安邮电大学计算机学院学生会,2017年度计算机学院教职工代表大会工作报告.doc...
  9. 带护甲的VN1630A/VN1640A来啦
  10. 梅林rpc服务器用户名密码,网件(NETGEAR)路由器默认密码_初始密码_用户名密码-192路由网...