1. 域名劫持:通过攻击或伪造DNS,把目标网站域名解析到错误的地址,从而实现用户无法访问目标网站。解决办法:加速dns缓存记录刷新的时间和数据,或者更换dns服务提供商。
2. xss(跨站脚本攻击):攻击者在web页面上插入恶意的script代码,当用户浏览该页面时,嵌入的script代码就会被执行。
三种攻击类型:
(1)基于反射的xss攻击:通过站点服务器返回脚本,在客户端执行
(2)基于存储的xss攻击:通过发表含有恶意的script代码的帖子或文章,存在服务器端,然后让其他访问者触发执行。
(3)基于dom或本地的xss攻击:一般通过提供免费wifi,直接在页面插入恶意脚本,无需访问服务器,就可以实现本地的攻击。
解决办法:对script标签进行过滤和转义,比如在前端就对搜索内容进行过滤,将转成<script>使它执行不了。总之最好是前段后端都要有过滤校验。
参考:https://www.cnblogs.com/lovesong/p/5199623.html
3. CSRF(跨站点请求伪造)
大致是:A登录B并成功还没退出的过程中,又点击了恶意网站C,使C盗取了cookie信息,从而伪造A执行恶意请求发向B。
防御措施:
(1)验证HTTP头的一个字段Referer
因为它记录了该HTTP请求的来源地址,比如说转账的请求,如果是伪造的,Referer里就是黑客自己的网站,银行只需要验证Referer是否是来自银行域名开头的,就能判断。
但是这种办法有两个弊端,1)Referer是浏览器提供的,低版本的浏览器容易被篡改,可靠性低。2)有些用户担心referer会把组织内网某些信息泄露从而自己设置请求不提供referer,这样使得有些网站会因为请求没有referer值而认为是csrf攻击从而拒绝合法用户的访问。
(2)在请求地址中添加token并验证
token是服务器端产生的,在用户登录后产生并放置于session中,是随机产生的,这样黑客网站就算在本地cookie中获取了验证信息,但是没有token验证,因此客户端请求中携带的token和服务器端session中的token不一致,该请求也是无效的。而且token是有过期时间的。
这种办法的弊端:如果通过get请求发送的,url会有token,黑客就能通过referer得到token值
(3)在 HTTP 头中自定义属性并验证
通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
弊端:XMLHttpRequest 请求通常用于ajax方法中对页面局部的异步刷新,且因为不能被浏览器所记录下,后退前进刷新和收藏都麻烦。
参考 https://blog.csdn.net/stpeace/article/details/53512283
4. http和https的区别:https是由网景公司设计在http的基础上加入SSL(安全套接字secure sockets layer)协议,用于对http协议传输的数据进行加密。
【SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段)。这样既保证了密钥分发的安全,也保证了通信的效率】
区别(1)https需要到ca申请证书
(2)http是超文本传输协议,明文传输。https有ssl的加密传输协议。
(3)连接方式不同,端口号也不同,http端口号是80,https端口号是443
(4)https虽然安全但是因为握手阶段分对称加解密耗时,所以相比http要慢的多。
(5)ssl证书需要钱,功能越强大的费用越高。
4. cookie、sessionstorage、localstorage区别
5. cookie和session的区别与联系
参考:https://blog.csdn.net/duan1078774504/article/details/51912868
6. 常见的http状态码
参见:https://blog.csdn.net/grandpang/article/details/47446561