前端基础面试题

1.盒模型?

盒子模型(box model)其实就是我们的布局模式,它包括的四个属性:外边距(margin)、边框(border)、内边距(padding)、实际内容(conteng);

分为W3C盒子模型(标准盒模型)和IE盒子模型(怪异盒模型)

二者区别:IE盒模型的content包含了border+padding

box-sizing: content-box(标准盒模型);border-box(IE盒模型);inherit;

2.for...in可以遍历数组和对象吗?有什么不同?

for..in可以遍历数组或者对象的属性

遍历数组:

var arr = [a,b,c,d]

for(i in arr) {

console.log(i);//0,1,2,3(index索引)

console.log(arr[i]);//每项的值要这么获取

}

var obj = {a:11,b:22,c:33}

for(i in obj) {

console.log(i);//a,b,c(属性)

console.log(obj[i]);//属性值

}

3.说一下HTTP 协议头字段都有哪些?

Accept:告诉WEB服务器自己接受什么介质类型(application/json, text/plain, */*)

Accept-Charset: 浏览器申明自己接收的字符集 

Accept-Encoding:浏览器申明自己接收的编码方法 (gzip, deflate, br)

Accept-Language:浏览器申明自己接收的语言 (zh-CN,zh;q=0.9)

语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等。

Connection: 告诉WEB服务器或者代理服务器,在完成本次请求的响应后对后续请求的处理(close、keep-alive)

Content-Length:WEB 服务器告诉浏览器自己响应的对象的长度(102)

Content-Type:WEB 服务器告诉浏览器自己响应的对象的类型(application/json;charset=UTF-8)

Cookie:_ga=GA1.1.39391377.1584928326; 

Expired:WEB服务器表明该实体将在什么时候过期,对于过期了的对象,只有在跟WEB服务器验证了其有效性后,才能用来响应客户请求。

Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号(localhost:8081)

Origin:http://localhost:8081

Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/UR(http://localhost:8081/)

Sec-Fetch-Dest:  empty

Sec-Fetch-Mode:cors

Sec-Fetch-Site:same-origin

User-Agent:浏览器表明自己的身份(是哪种浏览器)(Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1)

X-Requested-With:XMLHttpRequest

4.web注入攻击原理是什么?常见的web攻击?

xss和crsf

1.xss:跨站脚本攻击,通常出现在搜索框、留言板、评论区等地方

分类:反射性、存储型、DOM型

攻击方式:构造恶意链接,诱骗用户点击盗取cookie信息

反射性xss:这类危害较低,对网站没有什么严重的影响,具体表现在用户在搜索框输入xss语句返回弹框,仅出现一次

存储型xss:存储型对网站危害较大,用户插入xss语句后,恶意语句会存入网站数据库中,用户访问过程都会出现弹框

dom型xss:利用浏览器的dom解析,更不容易被发现,可以改变页面布局

漏洞危害:xss蠕虫、回话、流量劫持、网站挂马、盗取cookie

防护方法:设置黑名单和白名单、对用户输入进行过滤、入参字符过滤、出参字符转移、设置httponly

2.csrf

csrf:跨站请求伪造,攻击者冒充用户身份执行用户操作

漏洞原理:

a.用户登录信任网站在未退出的情况下访问攻击者构造的恶意网站

b.恶意网站发出访问第三方网站的请求,信任网站收到请求以用户信息访问

c.攻击者在用户不知情的情况下冒充用户身份访问成功

检测漏洞:抓取一个请求包,去掉referer字段进行访问,如果访问有效则存在漏洞

危害:盗用用户身份、执行用户操作,修改信息

防护方法:

a.设置referer字段;但是并不是所有服务器在任何时候都可以接受Referer字段,所以这个方法存在一定的局限性

b.设置验证码;用户在操作的过程中设置身份验证的验证码,该方法会很有用,不过验证码频繁的话会影响用户体验

c.设置token值,在用户请求中设置一个随机没有规律的token值可以有效地防止攻击者利用漏洞攻击

从上我们可以总结出:

xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等

csrf:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作

你可能感兴趣的:(前端基础面试题)