记一次惨烈的电话面试题

记一次电话面试,丢人啊,整整七道题没一道答对的,好丢人啊。
挂了电话后就开始进行复盘,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.网页里出现了一段广告,不存在于你的代码里,你的解决思路是?
  1. 首先排除是否是网站的问题,如果别人访问干干净净,没有广告,那么可能是你浏览器或者是运营上问题。
  2. 查询NetWork-js中是否有奇怪的js被调用。检查文件是否被修改(包括修改时间)。
  3. 查看是否是js缓存投毒
  4. 检查是否使用的是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.你的网页里打开后出现了一片空白,你该怎么做
  1. 先确定内容是否已加载,是加载后不显示还是,还是请求没有返回
  2. 如果内容已加载但显示空白,查看是否路径或文件名问题
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攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。

资料: https://www.cnblogs.com/lovesong/p/5233195.html

猜你喜欢

转载自www.cnblogs.com/mlcat/p/11503975.html