记一次电话面试,丢人啊,整整七道题没一道答对的,好丢人啊。
挂了电话后就开始进行复盘,web安全方面是完全的知识盲点,查了资料后还是有些懵懂。
http和https也欠缺。
1.有一个对象,A.a, A.b , 除了赋值的办法,如何删除或改变这个属性的值。
删除: delete A.a
改变这个属性的值:Object.defineProperty()方法
var person = {
name: 'Diuren'
}
console.log(person.name); //Diuren
Object.defineProperty(person,'name',{
value: 'Come on!'
})
console.log(person.name); //Come on!
2.一个变量a=0,除了赋值外,怎么删除这个变量
方法一: a = null;
切断变量名的指向,当垃圾回收机制启动事,会自动释放内存。
这问题涉及了一些js的自动垃圾回收机制。
自动垃圾回收机制: 找出那些不再继续使用的变量,然后释放其占用的内存。
垃圾回收器每隔固定的时间段就执行一次释放操作。
a=null 是一个释放引用的操作,这种方法叫解除引用,适用于全局变量或全局对象的属性。
局部变量会再他们离开执行环境的时候被自动解除引用。
3.网页里出现了一段广告,不存在于你的代码里,你的解决思路是?
- 首先排除是否是网站的问题,如果别人访问干干净净,没有广告,那么可能是你浏览器或者是运营上问题。
- 查询NetWork-js中是否有奇怪的js被调用。检查文件是否被修改(包括修改时间)。
- 查看是否是js缓存投毒
- 检查是否使用的是http,如果是迁入https
4. 对象有一个属性值,比如A.b = 0; 我怎么做在该属性改变的时候第一时间监控到。
常用的监听方法:基于 getter 和 setter
ES5中有一个方法 Object.defineProperty方法,改方法可以修改属性得默认特性,也可以修改一个已存在的属性或定义一个新属性。
var obj = {}
Object.defineProperty(obj,'a',{
get:function(){
return data;
},
set:function(newValue){
data = newValue;
console.log('set:'+newValue)
}
})
5.你的网页里打开后出现了一片空白,你该怎么做
- 先确定内容是否已加载,是加载后不显示还是,还是请求没有返回
- 如果内容已加载但显示空白,查看是否路径或文件名问题
6. https原理
什么是http?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
什么是https?
HTTPS协议 = HTTP协议 + SSL/TLS协议
HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL,其最新的版本是3.0
资料:https://www.jianshu.com/p/14cd2c9d2cd2
7.csrf攻击 xss攻击
xss攻击:跨站脚本攻击(Cross-site scripting)
CSRF(Cross Site Request Forgery),跨站点请求伪造。
CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。