zoukankan      html  css  js  c++  java
  • 前端安全漏洞与防范

    前端安全漏洞与防范

    跨站脚本攻击XSS

    定义

    XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻

    击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的非本站点HTML标签或
    JavaScript进行的一种攻击。

    危害

    利用虚假输入表单骗取用户个人信息。

    利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
    显示伪造的文章或图片。

    获取页面数据

    获取Cookies

    劫持前端逻辑

    发送请求

    偷取网站的任意数据

    偷取用户的资料

    偷取用户的秘密和登录态

    欺骗用户

    实施

    反射型:url参数直接注入

    存储型:存储到DB后读取时注入

    防御

    启用XSS过滤

    内容安全策略 (CSP, Content Security Policy)

    是一个附加的安全层,用于帮助检测和缓解某

    些类型的攻击,包括跨站脚本 (XSS) 和数据注入等攻击。 这些攻击可用于实现从数据窃取到
    网站破坏或作为恶意软件分发版本等用途。

    CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只

    需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻
    击。

    转义字符

    用户的输入永远不可信任的,最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠

    进行转义

    黑名单

    白名单

    跨站请求伪造CSRF

    定义

    CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,它利用用户已登

    录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

    危害

    利用用户登录态

    用户不知情

    完成业务请求

    盗取用户资金(转账,消费)

    冒充用户发帖背锅

    损害网站声誉

    防御

    禁止第三方网站带Cookie - 有兼容性问题

    Referer Check - Https不发送referer

    点击劫持

    定义

    点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己

    的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。

    防御

    X-FRAME-OPTIONS

    X-FRAME-OPTIONS 是一个 HTTP 响应头,在现代浏览器有一个很好的支持。这个 HTTP 响应头 就

    是为了防御用 iframe 嵌套的点击劫持攻击。

    该响应头有三个值可选
    DENY,表示页面不允许通过 iframe 的方式展示
    SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示
    ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示

    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 的方式加载页面时,攻击者的网页直接不显示所有内容了。

    SQL注入

    实施

    特殊密码

    防御

    所有的查询语句建议使用数据库提供的参数化查询接口**,参数化的语句使用参数而不是将用户

    输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query
    方法中的 ? 占位参数。

    严格限制Web应用的数据库的操作权限**,给此用户提供仅仅能够满足其工作的最低权限,从而

    最大限度的减少注入攻击对数据库的危害

    后端代码检查输入的数据是否符合预期**,严格限制变量的类型,例如使用正则表达式进行一些

    匹配处理。

    对进入数据库的特殊字符(',",,<,>,&,*,; 等)进行转义处理,或编码转换**。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar库。

    OS命令注入

    OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注

    入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在
    被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

    请求劫持

    DNS劫持

    DNS服务器(DNS解析各个步骤)被篡改,修改了域名解析的结果,使得访问到的不是预期的

    ip

    HTTP劫持

    升级HTTPS

    DDOS

    DDOS 不是一种攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断发明出来。网

    站运行的各个环节,都可以是攻击目标。只要把一个环节攻破,使得整个流程跑不起来,就达到了瘫痪
    服务的目的。
    其中,比较常见的一种攻击是 cc 攻击。它就是简单粗暴地送来大量正常的请求,超出服务器的最大承
    受量,导致宕机。我遭遇的就是 cc 攻击,最多的时候全世界大概20多个 IP 地址轮流发出请求,每个地
    址的请求量在每秒200次~300次。我看访问日志的时候,就觉得那些请求像洪水一样涌来,一眨眼就是
    一大堆,几分钟的时间,日志文件的体积就大了100MB。说实话,这只能算小攻击,但是我的个人网站
    没有任何防护,服务器还是跟其他人共享的,这种流量一来立刻就下线了。

    攻击

    SYN Flood

    HTTP Flood

    防御

    备份网站

    - HTTP 请求的拦截 高防IP -靠谱的运营商 多个 Docker

    带宽扩容 + CDN

  • 相关阅读:
    VMware虚拟机的三种连接方式
    Codeblocks16.01配置wxWidgets3.0.4
    DAO编程(VC6.0中的应用)
    VC++ 中用ado连接数据库
    C中文件的输入输出与C++的文件流
    Cpp中流继承关系
    a标签置灰不可点击
    手动操作数据库
    $.ajaxFileUpload is not a function
    【工具】手机号码、电话号码正则表达式
  • 原文地址:https://www.cnblogs.com/guojiabing/p/13534312.html
Copyright © 2011-2022 走看看