总纲:前端面试知识点大全
目录
1.xss(跨站脚本攻击)
1.1 概念
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的Web 网站注册用户的浏览器内运行非法的 HTML 标签或 JavaScript 进行的一种攻击。动态创建的 HTML 部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。
跨站脚本攻击有可能造成以下影响:1、利用虚假输入表单骗取用户个人信息;2、利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求;3、显示伪造的文章或图片。
例如在动态生成 HTML 处发生,input、textarea等
1.2 防御手段
将用户所提供的内容进行过滤。
1、对于输入:检测是否有script.img.等标签
2、对于输出:转义字符<转义成< >转义成>
3、设置cookie的httponly属性为true,则js无法通过document.cookie访问
4、又或者使用<script>或者 <img>,添加src,访问黑客的服务器,盗取cookie
5、或者直接<script>加上JS代码,修改form表单的action和method,甚至表单信息。
2.csrf(跨站请求伪造)
2.1 概念
跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
跨站点请求伪造有可能会造成以下等影响:1、利用已通过认证的用户权限更新设定信息等;2、利用已通过认证的用户权限购买商品;3、利用已通过认证的用户权限在留言板上发表言论
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1、登录受信任网站A,并在本地生成cookie
2、在不登出A的情况下,访问危险网站B(网站B可以利用A中的cookie进行某些操作)
例子:
CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。
2.2 CSRF防御
1、通过 referer(由服务器做检查)、token 或者 验证码 来检测用户提交。(token由客户端生成,事先与服务器商量,使用相同的salt进行加密,,然后服务器对token进行解密。添加到url中或者cookie中都行,因为每次通信的token不同)
2、尽量不要在页面的链接中暴露用户隐私信息。
3、对于用户修改删除等操作最好都使用post 操作 。
4、避免全站通用的cookie,严格设置cookie的域(domain)。
3. SQL注入
3.1 概念
SQL 注入(SQL Injection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL 而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
Web 应用通常都会用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用 SQL 语句连接数据库进行特定的操作。如果在调用 SQL 语句的方式上存在疏漏,就有可能执行被恶意注入(Injection)非法 SQL 语句。
SQL 注入攻击有可能会造成以下等影响:1、非法查看或篡改数据库内的数据;2、规避认证;3、执行和数据库服务器业务关联的程序等
通常在URL上进行修改,因为后台服务器检测不全,会直接执行URL后的search(?后面的)。
SQL中 单行注释-- 多行注释/**/
比如:
请求:http://example.com/search?q=name
SQL:SELECT *FROM TABLE WHERE author=‘name’ and flag = 1
SQL注入:http://example.com/search?q=name‘--
如果未检测:SELECT *FROM TABLE WHERE author=‘name’--’ and flag = 1
3.2 防御手段
1)正则表达式
2)字符串过滤
4.DDOS
4.1 概念
分布式拒绝服务攻击。简单说就是发送大量请求是使服务器瘫痪。
4.2 例子
1. SYN Flood ,简单说一下tcp三次握手,客户端先服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,攻击者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果攻击者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。
2. CC攻击,在应用层http协议上发起攻击,模拟正常用户发送大量请求直到该网站拒绝服务为止。
4.3 解决方案
1. 最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
2. 云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源