JS中的数据类型
- JS中的数据类型由六种基本数据类型(ES6新增了一种Symbol)和一种复杂类型组成。
JS中的基本数据类型有哪些?
Number
、String
、Null
、Undefined
、Boolean
、Symbol
。
基本数据类型的检测方法是什么?
typeof
可以判断除null
之外的基本数据类型属于哪一种具体的基本数据类型,typeof null
返回Object
。
typeof 1 // "number"typeof NaN // "number"typeof '1' // "string"typeof undefined // "undefined"typeof true // "boolean"typeof null // "object"typeof Symbol() // "symbol"复制代码
typeof null
返回 object
的原因
在 JS 的最初版本中使用的是32位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表对象,而
null
表示为全零,所以将它错误的判断为object
typeof与复杂数据类型
- typeof 函数 会返回
function
,其他复杂类型都会返回object
typeof function add (){} //"function"typeof {} //"object"复制代码
复杂数据类型的检测方法:instanceof
obj1 instanceof obj2
如果obj1
的原型链上有ojb2.prototype
,那么返回true
。
[] instanceof Array //truevar obj = {}obj instanceof Object复制代码
get请求和post请求有什么不同?
常见的前端攻击方式有哪些?
- XSS攻击
XSS攻击的本质就是将攻击者恶意注入的代码执行。
-
反射型攻击
通过构造URL中的参数拼接恶意代码,页面中是直接读取的URL中的参数,这时候将恶意代码输入到页面中。
-
存储型攻击
通过构造URL中的参数拼接恶意代码,恶意代码被存储到数据库中,页面中从数据库读取数据,这时候将恶意代码输入到页面中。
-
防范措施:
- 前端和后端在传递和接受数据都进行转码和解码。
- 在服务端设置HTTP头
Content-Security-Policy: default-src 'self'
,或者在前端设置<meta http-equiv="Content-Security-Policy" content="form-action 'self';">
- HTTP-only Cookie: 在cookie中设置HttpOnly属性,那么通过js脚本将无法读取到cookie信息,攻击者完成 XSS 注入后也无法窃取此 Cookie。,这样能有效的防止 XSS 攻击。
- 提交表单的时候增加验证码,防止通过代码的方式提交表单。
- CRFS攻击
攻击者利用登陆了某网站A的用户的登录信息,通过诱导用户点击网站B,在B网站上像A网站发送一些请求。
- 解决方法:
- 根据HTTP请求头Referer判断请求的来源
- 用户每次像服务器提交的诗句都携带一个唯一的Token。