WEB 安全

一. XSS (跨站脚本攻击):恶意攻击者往WEB页面里插入恶意可执行网页脚本代码

(1)非持久性XSS

  1. 解释:非持久性的XSS 就是给用户传递不好的URL 引诱用户点击,url地址被打开的时候特有的恶意代码参数被HTML解析,执行
  2. 步骤:
  • 用户登录某一个网站
  • 攻击者发送非法URL 给用户
  • 用户点击非法URL 
  • WEB 应用程序对攻击者的JS 做出回应
  • 用户浏览器向攻击者发送会话信息
  • 攻击者劫持用户信息然后去访问服务器

     3.预防:

  • web页面渲染的所有的内容或者渲染的数据都必须来自于服务器
  • 尽量不要从url,document.referrer,document.forms等这种DOM  API中获取数据直接渲染
  • 设计对于dom渲染的方法传入的字符串参数做escape转义
  • 前端渲染的时候对任何的字段都需要做escape转义编码
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。字符值大于 255 的以 %uxxxx 格式存储。

      4.特点:                              

1.即时性:不经过服务器存储,直接通过HTTP的GET和POST方法就能完成一次攻击,拿到用户隐私数据
2.攻击者需要诱骗点击
3.反馈率低,比较难发现和响应修复
4.盗用用户敏感保密信息

(2)持久性XSS                                

  1. 解释:存储型XSS漏洞,一般存在form表单提交等交互功能,将内容经过经过正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中  读出的注入时的代码时,恰好将其渲染。
  2. 发生的条件:
    1. post请求提交表单后端没有做转义直接入库  【对于python来讲可以利用encode来对数据进行转义,然后在存到数据库里面,等要传给前端的时候再利用decode将数据转成正常的字符传给前端】 
    2. 后端从数据库中读取数据的时候没有做转义直接给前端
    3. 前端拿到后端的数据的时候没有做转义直接渲染成DOM【这里表示从后端拿数据后直接做字符串的拼接去渲染dom】

二:CSRF     

1.解释:跨站请求伪造攻击【攻击者盗用你的登录信息,以你的身份模拟发送各种请求】

2.步骤:

  • 登录信任网站A
  • 通过验证,再浏览器中产生cookie
  • 用户在没有登出A 的情况下访问危险网站B
  • B要求访问A网站,请求发出一个request
  • 根据B在(4)中的请求,浏览器带着(2)中产生的 cookie访问A

3.预防

  • 正确使用get还有post方法(get请求只是执行一些数据库查询的时候,post请求应用在insert,update,delete的时候)
  • 在非get请求中增加token(在表单提交的时候加上csrftoken,然后再后端做csfrtoken验证)
  • 加上验证码

三. sql注入

1.解释:程序没有有效的转义过滤用户的输入,让攻击者成功的向服务器提交恶意的SQL查询代码,程序再接收后错误的将输入作为查询语句的一部分执行,导致原始的查询逻辑被改变。

2.原理:

后端的SQL 语句是这样的:

let querySQL = '
    select *
    from user
    where username = '${username}'
    and psw = '${password}'
'

攻击者输入的用户名为: wanghan or 1==1___

让对应的sql语句变成了:select * from user where username = 'wanghan' or 1==1 ___ and psw = 'XXX'

只要攻击者将用户名输入正确,就可以直接进入对应的网站【___表示将后面的语句进行了注释】

3.预防:

  • 严格限制web应用的数据库的操作权限
  • 后端检查输入的数据是否符合预期
  • 对进入数据库的特殊字符( ' , " , \ , < , >,&,*, ;等)进行转义处理或者是编码转换
  • 所有的查询语句建议使用数据库提供的参数化查询接口【参数化的语句使用参数而不是将用户输入直接嵌入到sql语句中
  • 在应用发布之前建议采用专业的SQL注入检查工具进行检测
  • 避免网站打印SQL错误信息
  • 不要过于细化返回的错误信息

四. DDOS 攻击

1.原理:利用大量的请求造成资源过载,导致服务不可用

                       

你可能感兴趣的:(安全)