IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP——Web常见安全问题和防御 -> 正文阅读

[网络协议]HTTP——Web常见安全问题和防御

Web中常见的安全问题有

  • SQL注入
  • XSS
  • CSRF
  • 点击劫持

1 SQL注入

  • 原理:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
  • 防御:
    1. 对用户的输入进行校验,如通过正则表达式进行限制;
    2. 避免动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取;
    3. 避免使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;
    4. 避免把机密信息明文存放;

2 XSS

XSS即跨域脚本攻击(cross-site scripting),是一种网站应用程式的安全漏洞攻击,是代码注入的一种.

  • 原理: 不需要做任何登录认证,攻击者通过合法的操作(如在url或评论框中输入),往web页面插入恶意的html标签或JavaScript代码.例如

    <!-- 页面的url: http://www.domain.com?name=<script>alert(1)</script> -->
    <div>{{name}}</div>    
    

    攻击者可能可以通过改变urlhtml修改为

     <div><script>alert(1)</script></div>
    

    这样页面就凭空多出一段可执行脚本.

  • 防御:

    1. encode:最普遍的做法是转义输入输出的内容,对于引号,尖括号,斜杠等进行转义

      function escape(str) {
      	str = str.replace(/&/g, "&amp;");
      	str = str.replace(/</g, "&lt;");
      	str = str.replace(/>/g, "&gt;");
      	str = str.replace(/"/g, "&quto;");
      	str = str.replace(/'/g, "&##39;");
      	str = str.replace(/`/g, "&##96;");
          str = str.replace(/\//g, "&##x2F;");
          return str
      }
      

      如果是富文本,就设置白名单.

    2. 过滤:

      移除用户输入的和事件相关的属性.如onerror可以自动触发攻击,还有onclick等.

      移除用户输入的style,script,iframe节点,尤其是script节点,它是支持跨域的,一定要移除.

      (总而言之,过滤掉一些不安全的内容)

3 CSRF

CSRF即跨站请求伪造(cross-site request forgery)

  • 原理:

    17

    从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:

    1. 登录受信任网站A,并在本地生成cookie.(如果用户没有登录网站A,那么网站B在请求网站A的接口时,会诱导用户登录A)
    2. 在不登出A的情况下,访问危险网站B.(其实是利用了网站A的漏洞)
  • 防御:

    1. Token验证:(最常用)

      • 服务器发送给客户端一个Token
      • 客户端提交的表单中带着这个Token
      • 如果这个Token不合法,服务器就拒绝这个请求
    2. 隐藏令牌:

      Token隐藏在HttpHead头中.隐藏令牌和Token验证有点像,本质上没有太大区别,只是使用方式上有区别.

    3. Referer验证:

      Referer指的是页面请求来源.意思是,只接受本站的请求,服务器才做响应.如果不是,就拦截.

XSSCSRF的区别

区别一:

  • XSS不需要登录
  • CSRF需要用户先登录网站A,获取cookie

区别二:

  • XSS是向网站A注入JS代码并执行,篡改网站A的内容
  • CSRF是利用网站A本身的漏洞,去请求网站A的接口

4 点击劫持

  • 原理:

    点击劫持是一种视觉欺骗的攻击手段.攻击者将需要攻击的网站通过iframe嵌套的方式嵌入自己的网页中,并将iframe设置为透明,在页面中透出一个按钮诱导用户点击.

    image.png

  • 防御:

    1. X-FRAME-OPTIONS

      X-FRAME-OPTIONS是一个Http响应头,这个响应头就是为了防御用iframe嵌套的点击 劫持攻击.

      X-FRAME-OPTIONS有三个值可选,分别是

      • DENY,表示页面不允许通过iframe的方式展示
      • SAMEORIGIN,表示页面可以在相同域名下通过iframe的方式展示
      • ALLOW-FROM,表示页面可以在指定来源的iframe中展示
    2. JS防御

      对于不兼容X-FRAME-OPTIONS的浏览器,只能通过JS的方式来防御点击劫持

      <head>
        <style id="click-jack">
          html {
            display: none !important;
          }
        </style>
      </head>
      <body>
        <script>
          if (self == top) {
            var style = document.getElementById('click-jack')
            document.body.removeChild(style)
          } else {
            top.location = self.location
          }
        </script>
      </body>
      

      以上代码的作用就是当通过iframe的方式加载页面时,攻击者的网页直接不显示所有内容了

5 网页验证码

另外,为了区分用户是计算机还是全自动程序,通过网页验证码来防止恶意破解密码,刷票,论坛灌水等.

网页验证码能有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试.

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:06:18  更:2021-09-08 11:06:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:11:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码