当前位置 博文首页 > 文章内容

    XSS 攻击、CSRF 攻击、SQL 注入脚本、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全

    作者:..... 栏目:网站安全 时间:2020-11-24 13:52:42

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    XSS攻击

         XSS(Cross Site Script)跨站脚本攻击,指的是向网页注入恶意代码,并对网页进行篡改。在用户浏览时,从而获取用户隐私数据的一种攻击方式。一般为 JavaScript 。

         窃取 Cookie 信息,模拟用户进行登录,然后进行转账等操作

         使用 addEventListener 监听用户行为,监听键盘事件,窃取用户的银行卡密码等。并发送到攻击者的服务器

         通过修改 DOM 伪造假的登录窗口,欺骗用户输入用户名和密码等

         生成浮窗广告等

         修改 URL 跳转到恶意网站

         ....

    防御 :

         输入检查:对输入内容中的 script 和 iframe 等标签进行转义或者过滤

         设置 httpOnly(后端): 设置此属性可防止 JavaScript 获取 Cookie, 只能在 HTTP请求过程中使用 Cookie

         开启 CSP 白名单 :即开启白名单,可以阻止白名单意外的资源加载和运行

    CSRF攻击

         CSRF(Cross—Site Request Forgery) 跨站请求伪造。简单说一下自己的理解,不对的地方请指正。CSRF攻击主要是利用用户登陆过的网站生成的Cookie,也就是这个用户的凭证,操控用户,进行转账等有利于攻击者的行为。但并不是像XSS攻击一样窃取Cookie,攻击者不知道Cookie的内容,只是利用而已。 例子: 网站A为用户正常浏览的网站,网站B为攻击者的恶意网站。假设用户已经登录网站A获取到了Cookie,这时候用户打开网站B,这时候网站B运行恶意代码,请求访问网站A或者说网站A某个api(例如网站A的转账api),通常是在用户不知情的情况下。

    防御:

         验证 Token:浏览器请求服务器时,服务器返回一个 token,之后每个请求都需要同时带上 token 和 Cookie 才会被认为是合法请求

         验证 Referer:通过验证请求头的 Referer 来验证来源站点,但请求头很容易伪造

         设置 SameSite:设置 Cookie 的 SameSite,可以让 Cookie 不随跨站请求发出,但浏览器兼容不一

    SQL注入

         主要是通过往输入框里面输入 SQL语句,利用 SQL的语法识别机制,从而修改数据库实际上运行的SQL语句,以达到攻击者的目的

         例如: (假设前端没有做用户名和密码的校验) 用户输入的用户名:Kite OR '1 = 1'-- 用户输入的密码:123456
         预想执行的SQL语句:SELECT * FROM user WHERE username='Kite' AND psw='123456'
         实际执行的SQL语句:SELECT * FROM user WHERE username='Kite' OR 1 = 1 --' AND psw='xxxx'
         "--":是SQL的注释代码。也就是说 1 = 1 后面的代码无效。 结果就变成无论输入的用户名和密码是否正确,都可以登录。因为 1 = 1 肯定是为 true 。

    防御:

         通过正则验证用户输入的内容是否包含引起隐患的字符

         一般由后端来处理。

    流量劫持

    DNS 劫持

         建过站点的朋友应该都知道,需要域名解析,不然无法通过自己购买的域名访问自己的服务器。域名解析,也就是通过 DNS 服务器实现域名和服务器IP的映射,例如 http://kite1874.com 对应的 IP 为 127.0.0.1。你访问 http://kite1874.com 的时候,实际访问的是 127.0.0.1 这个IP地址对应的服务器。实际上输入 127.0.0.1 也可以正常访问站点。之所以需要使用域名进行访问,是为了方便记忆和SEO

         DNS劫持,也就是通过篡改域名映射的IP,导致用户访问的网站,变成攻击者准备的恶意网站。

         例如:

         篡改路由器 DNS 配置。

         篡改 Hosts 文件貌似也可以做到(自己脑补的)

         网络供应商可以修改,如果有意这样做的话。

         ...

    HTTP 劫持

         大家都知道,HTTP 请求是明文的。而 HTTP 劫持主要是篡改请求的内容。例如:你打开一个网页,请求返回一个HTML文件,然后有意者修改这个HTML,往里面插了个小广告,然后再返回给你。广告还算小事,要是返回一个表单让你输入账号密码呢?你全然不知,还以为这是原来网站上的表单呢

    防御:

         HTTP 传输是明文,所以需要给它加密。也就是 HTTPS 协议。需要申请 SSL 证书。