摸鱼前端的自检(四)浏览器如何防gank?

浏览器如何防gank?

在面试中我们常常会被问到web攻击,如果预防和处理之类的,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事。这里主要列出集中常见的web攻击方式和防御处理方法。

有兴趣的同学可以去我的github,里面有我的分享的学习过程和blog.
github.com/193Eric


XSS

XSS攻击:跨站脚本攻击(Cross-Site Scripting)
XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中
XSS分为两个大类:

  • 存储型XSS
    主要是提供了让用户输入数据的接口,比如说评论,留言,表单等。服务器把这类输入存储到数据库里面,当用户访问的时候,从数据库里面读出来,在界面展现出来。攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。
    基本流程是:
    恶意脚本输入—》服务器存入数据库—》用户访问界面,从数据库取出数据输出到页面—》受到XSS攻击

  • 反射型XSS
    反射型 XSS 一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。
    主要是从url上面输入攻击代码,有一些网页,会把url上面带的字符串,当做输出,显示在网页上。
    比如有这么一个网站wwww.baidu.com?msg=error,会在网页上会有一个

    error
    显示出出error字符串,如果我输入的是wwww.baidu.com?msg=,就会运行这个代码。

如何预防XSS攻击

最简单的方法就是认为所有用户的输入都是不安全的,把所有的输入都进行一遍特殊字符的过滤,


SQL注入

就是攻击者通过输入sql的查询代码,有些程序不严谨,后台语言sql查询的时候,用的简单字符串拼接。然后程序接收到这段恶意的Sql代码之后,导致原有的查询逻辑被修改,造成严重影响。

比如:
后台的查询用户名是否存在用的这段,select * from user where user_name = ''结果用户输入的user_name是;DROP TABLE user;,直接就把user表给删除了…

如何预防SQL注入

  • 在后台语言中,可以用模板或者预编译的方式,只去字符串,而不是做简单的拼接。

  • 对特殊字符过滤,转义。


DDOS

什么是DDOS?
DDOS:分布式拒绝服务攻击(Distributed Denial of Service),攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击。简单来说dos攻击就是以一个ip地址向另一个ip地址做攻击;DDOS就是多个ip攻击一个ip。

黑客为什么要用DDOS攻击?
DDOS对攻击方来说,消耗也是不少的,很多黑客都是通过自己掌控的肉鸡(中了病毒的电脑),来攻击一个ip,有被杀毒软件查杀的危险。就我来说,我呆在一家区块链公司,经常会受到DDOS攻击,阿里云DDOS防御开启一天又贼贵,黑客一攻击就是几个小时,然后我们会受到一封勒索邮件,一个比特币钱包地址,要我们打一个比特币过去,就停止攻击,…反正处理起来很麻烦

如何预防DDOS攻击

DDoS 防御产品的核心是检测技术和清洗技术,一般来说,硬抗或者买阿里云DDOS防御包吧,小公司自己建立防御体系,太难。


CSRF

CSRF(Cross-site request forgery),中文名称:跨站请求伪造

CSRF 能这么理解,就是攻击者盗用了你的身份信息,以你的名义发送任何请求进行操作。

CSRF怎么攻击的?

说实话,CSRF这个攻击在我认为,是很难得.
CSRF的攻击流程如下:

  • 假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

  • 那么,一个恶意攻击者可以在另一个网站上放置如下代码:

  • 如果用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。

为什么我说对当前年代很难呢,首先要满足登录两个不同的网站,第二银行和一些涉及钱的地方都会需要短信验证或者资金密码。不是一个cookie能解决的。

如何预防CSRF

  • 检查Referer字段,HTTP请求头里面有这个字段,可以看到网站访问来源于哪个地址。不过只是简单方法,不可否认有些黑客可能修改浏览器的referer字段。

  • 增加token,因为这种攻击方式是通过劫持cookie来办到的,所以添加一个攻击者获取不到的token来做验证是可行的。

你可能感兴趣的:(H5)