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而是直接冒充用户、需要用户登录后进行操作