文章写于 2016 年,旧的博客不维护了,一些文章直接迁移到这边来。本文为当时记录的第三篇,记得应该是腾讯音乐的内推一面/二面。后面内推挂了,走的实习招聘。javascript
先介绍CSRF: 跨站请求伪造,cross site requrest forgery.
意思是跨域发出请求,请求是身份认证后的(除了referer不同,cookie是同样的)
原理: 受害者必须依次完成两个步骤:
1.登陆受信任网站A,并在本地生成Cookie。
2.在不登出A的状况下,访问危险网站B。
cookie发送:若是是内存cookie,均可以正常发送,若是是本地cookie,须要带有p3p属性.
get请求能够经过img等标签,post请求直接经过form表单提交.html
CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然能够保证一个请求是来自于某个用户的浏览器,但却没法保证该请求是用户批准发送的!前端
防护:java
参考: 浅谈CSRF攻击方式jquery
跨域有没有额外的请求? 当时说没有=.= 后来想到又OPTIONS,本身确实遇到过的.
OPTIONS的用途:ios
跨域的话,有没有遇到传cookie的问题?没有=.= 怎么解决? 查了一下资料,大概是这几种:面试
其实当时若是不太紧张应该是能够想出来的=.= 当时说本身没遇到不会.
参考: 实现跨域cookie共享(转载)shell
$('elementsSetThatCanBeTapped').on('tap', function(e) {
e.preventDefault();
e.stopPropagation();
$(this).off('click');
})
复制代码
看起来是解除了click事件,阻止默认行为和冒泡.我试试看..嗯试了一下真的能够.可是若是能够,不要绑定click事件就行了吧…上面差很少就是这么作了.不过若是有事件委托那不太同样.果真面试的时候脑子不顶用啊哈哈.json
问我还有没有了解其余前端安全.说了XSS.Cross Site Scripting.跨站脚本.然而重点不在跨站上.
发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程当中出现了不被预期的脚本指令并执行时,XSS发生了.
跨站是由于通常攻击都是获取第三方的脚本资源(script请求).分为三种:反射型,存储型,DOMXSS后端
防护措施:
不要在页面中插入任何不可信数据,除非这些数已经进行了编码 在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码.编码的有6个: (当时蒙对了4个=.=)
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
复制代码
不推荐将单引号( ‘ )编码为 ' 由于它并非标准的HTML标签 须要对斜杠号( / )编码,由于在进行XSS攻击时,斜杠号对于关闭当前HTML标签很是有用
参考: 防护 XSS 的七条原则