前端安全(了解)

181 阅读4分钟

Xss (Cross Site Scripting) 定义及其危害 xss是互联网中使用最广泛的攻击手段之一 xss定义:xss是跨站脚本攻击(cross site scripting),是一种经常出现在web应用中的计算安全漏洞,它允许恶意web用户将代码植入到提供给其他用户使用的页面中。 Xss攻击由于被黑客编写为危害更大的网络钓鱼pishing攻击而被人广为公知

危害

  • 盗取各类账号,网银账号,管理员账号
  • 控制企业数据,包括读取、篡改、添加、删除企业级数据
  • 非法转账
  • 控制受害者及其向其他网站发起攻击

攻击方式

  • 储存型攻击:Xss代码被插入到类似于个人信息或发表的文章等储存服务器上的信息中,即xss代码被持久化
  • 反射型攻击:非持久化,代码隐藏在链接中,欺骗用户自己点击链接时触发xss代码,一般出现在搜索页面

xss防范

  • 过滤:对提交内容中非法标签和属性(例如script、onclick等)进行过滤,从而避免xss攻击
  • 转译:通过使用htmlspicalchars等函数,将提交内容字符”<“等转换为html实体
  • csp网页安全政策(Content Security Policy) 实质上是白名单
    • 通过 HTTP 头信息的Content-Security-Policy的字段。
    • 在网页中设置标签

攻击示例

<!—- 符号引用 String.fromCharCode(34) String.fromCharCode(39) —>

<!—- 屏蔽innerHTML —> document.body[‘inner’+’HTML’] = ‘hello word'

案例: 新浪微博蠕虫 储存型— 将脚本写入输入内容中 myspace蠕虫 反射型 — 搜索会读取url中数据,将脚本写入链接中

csrf (Cross Site Request Forgery) 跨站请求伪造

利用用户已登陆网站的cookie,发起伪造请求,达到目的 攻击方式

  • Get型攻击 通过get向目标网站发起攻击
  • post型攻击 模拟form表单向目标网站发起请求

请求防范

  • Referer请求头 通过请求头来判断来源,从而避免csrf攻击
  • token 防范 表单提交添加token,标示表单的合理性

sql注入 定义

  • Sql注入攻击 通过把sql命令插入到web表单提交或输入域名或页面查询字符串,最终达到欺骗服务器执行恶意sql命令
  • 游戏中的名字为‘他爸爸’,当被别人杀死的时候,系统会提示‘xx杀死了他爸爸’
  • sql中注入
    • select * from user where name = ‘zhangsan'
    • select * from user where name = ‘ zhangsan’ or 1 = 1 — ' ' 攻击方式
  • 通过登陆页面sql注入
  • 通过文章管理页面注入 防范
  • 使用预编译,不要使用sql动态拼接方式
  • 特殊字符转译 --容易造成二次注入
    • 我们写入数据 admin',会变成 admin',但是在插入的数据库时是不带有反斜杠的, 也就是说数据库中的数据还是 admin',这样的话,如果这个网站有另一个地方查询这个字段的内容,就造成了二次注入攻击。
  • 严格的数据类型

/**/ 注释也相当于空格 # 后面部分不会执行

文件上传漏洞 原因 上传服务器一些非法文件,这些文件下载到服务器本地,通过url可以直接访问这些文件,文件内容可以执行服务器端命令 定义

  • 指用户通过利用windows文件命名规则,上传可执行脚本文件,并通过此脚本文件获得了执行服务器端命令的能力 原因
  • windows命名规则,文件名不能包含特殊字符
  • php中移动文件,会把一些特殊字符后面的省略掉 比如(abc:d.jpg 变成 abc) 防范
  • 限定固定的后缀名文件
  • 文件地址不可访问

点击劫持

  1. 创建一个网页利用iframe包含目标网页
  2. 隐藏目标网站,让用户无法察觉到目标网站
  3. 构造网页,让用户点击特定按钮
  4. 用户不知情的情况下点击按钮,触发恶意网站的命令

防御 X-FRAME-OPTIONS 设定这个值来确保自己网站内容没有被嵌套到其他网站上去

中间人攻击 中间人攻击是攻击方同时与服务端和客户端建立起了连接,并让对方认为连接是安全的,但是实际上整个通信过程都被攻击者控制了。攻击者不仅能获得双方的通信信息,还能修改通信信息

防范 HTTPS 就可以用来防御中间人攻击