web安全问题:SQL注入 、XSS 、CSRF

文章目录

  • 前言
  • 一、SQL注入
  • 二、XSS
  • 三、CSRF
  • 四、XSS和CSRF区别
  • 总结


前言

对于一个前端网页,并不是运行起来,部署完了就大功告成了,因为,总有一些攻击手段会让你的网站崩坏。

一、SQL注入

攻击目标:数据库
发生前提:

  1. 如果你的程序中出现了动态拼接sql语句进行数据操作,(但是可能觉得es6的模板字符串是真的好用,但问题也很多)
  2. 如果对于用户手动输入的内容你只是单纯获取然后拿到后端请求数据(数据清洗问题

总之就是你的程序过于脆弱,十分容易将某一个请求或操作不经思索的传递给后端处理,后端又没有过滤处理,盲目的拿到请求就直接进行数据库的请求,最后导致,如果对方恶意插入sql语句(比如一个del删表操作、添加注释)你的数据库就会出现问题,然后…你被攻击了。

通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

所以你需要:

  1. 不要动态拼接sql语句、尽量使用params参数传递,并对传过来的参数进行长度、特殊字符的判断(数据清洗)
  2. 数据加密,机密信息不要明文放置,降低其攻击成功的可能性。
  3. 永远不要以管理员权限连接数据库。

二、XSS

跨站脚本攻击
攻击目标:服务器
攻击前提:还是内容过滤上的漏洞
攻击手段:在网页中注入攻击脚本(js等),主要利用js代码的注入,导致服务器执行了错误的代码。攻击者可能会在网站论坛中放一个看似安全的链接,然后点进去就会盗取你的相关信息(cookie);或者1是在论坛上放一个恶意表单,用户提交表单的话,就会把信息提交到三方,而不是可信任的二方。
想象一下,当三方有了你的cookie信息,他就可以用你的账户信息登录…
解决:

  1. 还是输出过滤,不是什么请求都可以提交到后端处理的,
  2. 转义,可以将内容在写到页面前进行encode
  3. HttpOnly,设置这个字段,就可以保护你的cookie信息不会被那么容易获取,(避免XSS攻击利用JS的document.cookie获取cookie)

三、CSRF

跨站脚本伪造
可以说是利用了XSS进行的一种攻击
攻击前提:当前用户,登录了某受信任的网站,并产生了cookie信息,再不等出该网站的情况下,点击了三方链接,然后…你的cookie被偷走了。
攻击手段:

  1. 自动发起的GET请求。img标签有一个src属性,如果放置了一个好看的图片(你懂的)然后你开开心心的去点击,然后…(可能你的QQ总被盗号,就是你太喜欢好看的图片了)
<img src="http://time.geekbang.org/sendcoin?user=hacker&number=100">
  1. 自动发起的POST请求。三方构造了一个表单,比如’某某网站带你看xxx’,然后你点击,然后表单自动提交…(构建自动提交表单的方式,就可以实现跨站点POST数据提交。)

解决:

  1. 充分设置好Cookie的SameSite属性
  2. 验证请求来源站点
  3. CSRF Token 第三方无法获取token。

四、XSS和CSRF区别

  1. 原理:
    XSS是是通过代码注入的方式攻击
    CSRF通过利用网站本身存在的漏洞,请求网站的API
  2. 攻击对象:
    XSS攻击的是服务器
    CSRF是针对用户,通过用户发起了攻击
  3. 是否必须需要cookie
    XSS不需要,
    CSRF则是必须在获取到cookie下才能进行

总结

三者的共同点就是程序过滤问题,所以多方监测测试真的很重要。
(个人理解整理)

你可能感兴趣的:(JavaScript,web安全,sql,xss)