csrf和xss的网络攻击及防范?
答:
CSRF:跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求,比如用户登录了一个网站后,立刻在另一个tab页面访问量攻击者用来制造攻击的网站,这个网站要求访问刚刚登陆的网站,并发送了一个恶意请求,这时候CSRF就产生了,比如这个制造攻击的网站使用一张图片,但是这种图片的链接却是可以修改数据库的,这时候攻击者就可以以用户的名义操作这个数据库,防御方式的话:使用验证码,检查https头部的refer,使用token
XSS:跨站脚本攻击,是说攻击者通过注入恶意的脚本,在用户浏览网页的时候进行攻击,比如获取COOKIE,或者其他用户身份信息,可以分为存储型和反射型,存储型是攻击者输入一些数据并且存储到了数据库中,其他浏览者看到的时候进行攻击,反射型的话不存储在数据库中,往往表现为将攻击代码放在url地址的请求参数中,防御的话为COOKIE设置httpOnly属性,对用户的输入进行检查,进行特殊字符过滤。
2.怎么看网站的性能如何?
答:
检测页面加载时间一般有两种方式,一种是被动去测:就是在被检测的页面置入脚本或探针,当用户访问网页时,探针自动采集数据并传回数据库进行分析,另一种主动监测的方式,即主动的搭建分布式受控环境,模拟用户发起页面访问请求,主动采集性能数据并分析,在检测的精准度上,专业的第三方工具效果更佳,比如说性能极客。
3.介绍HTTP协议(特征)?
答:
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
4.输入URL到页面加载显示完成发生了什么?
答:
DNS解析
TCP连接
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束
5.说一下对COOKIE和Session的认知,COOKIE有哪些限制?
答:
1.COOKIE数据存放在客户的浏览器上,session数据放在服务器上。
2.COOKIE不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4.单个COOKIE保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个COOKIE。
6.描述一下XSS和CRSF攻击?防御方法?
答:
XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。
CSRF(Cross Site Request Forgery,跨站请求伪造),字面理解意思就是在别的站点伪造了一个请求。专业术语来说就是在受害者访问一个网站时,其 COOKIE 还没有过期的情况下,攻击者伪造一个链接地址发送受害者并欺骗让其点击,从而形成 CSRF 攻击。
XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。
防御CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
7.具体有哪些请求头是跟缓存相关的?
答:
缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。
强缓存相关字段有expires,cache-control。如果cache-control与expires同时存在的话,cache-control的优先级高于expires。
协商缓存相关字段有Last-Modified/If-Modified-Since,Etag/If-None-Match
8.COOKIE有哪些字段可以设置?
答:
name字段为一个COOKIE的名称。
value字段为一个COOKIE的值。
domain字段为可以访问此COOKIE的域名。
非顶级域名,如二级域名或者三级域名,设置的COOKIE的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的COOKIE,否则COOKIE无法生成。
顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则COOKIE无法生成。
二级域名能读取设置了domain为顶级域名或者自身的COOKIE,不能读取其他二级域名domain的COOKIE。所以要想COOKIE在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个COOKIE的值了。
顶级域名只能获取到domain设置为顶级域名的COOKIE,其他domain设置为二级域名的无法获取。
path字段为可以访问此COOKIE的页面路径。比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此COOKIE。
expires/Max-Age 字段为此COOKIE超时时间。若设置其值为一个时间,那么当到达此时间后,此COOKIE失效。不设置的话默认值是Session,意思是COOKIE会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此COOKIE失效。
Size字段 此COOKIE大小。
http字段 COOKIE的httponly属性。若此属性为true,则只有在http请求头中会带有此COOKIE的信息,而不能通过document.COOKIE来访问此COOKIE。
secure 字段 设置是否只能通过https来传递此条COOKIE
9.除了COOKIE,还有什么存储方式。说说COOKIE和localStorage的区别?
答:
还有localStorage,sessionStorage,indexdDB等
COOKIE和localStorage的区别:
COOKIE数据始终在同源的http请求中携带(即使不需要),即COOKIE在浏览器和服务器间来回传递
COOKIE数据还有路径(path)的概念,可以限制。COOKIE只属于某个路径下
存储大小限制也不同,COOKIE数据不能超过4K,同时因为每次http请求都会携带COOKIE,所以COOKIE只适合保存很小的数据,如回话标识。
localStorage虽然也有存储大小的限制,但是比COOKIE大得多,可以达到5M或更大
localStorage始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;COOKIE只在设置的COOKIE过期时间之前一直有效,即使窗口和浏览器关闭。
10.HTML5和CSS3用的多吗?你了解它们的新属性吗?有在项目中用过吗?
答:
html5:
1)标签增删
8个语义元素 header p footer aside nav main article figure
内容元素mark高亮 progress进度
新的表单控件calander date time email url search
新的input类型 color date datetime datetime-local email
移除过时标签big font frame frameset
2)canvas绘图,支持内联SVG。支持MathML
3)多媒体audio video source embed track
4)本地离线存储,把需要离线存储在本地的文件列在一个manifest配置文件
5)web存储。localStorage、SessionStorage
css3:
CSS3边框如border-radius,box-shadow等;CSS3背景如background-size,background-origin等;CSS3 2D,3D转换如transform等;CSS3动画如animation等。
注意:本文答案仅作为参考
关注公众号,后台回复“java高级进阶”,免费获取Java高级进阶全套资料(分布式+微服务+技术文档+简历模板)