防篡改
2016-03-15 00:19
288 查看
防篡改: 对对象整体的保护
三个级别: 不可逆
1. 防扩展: 禁止扩展新属性
其实就是设置对象的Extensible属性为false
Object.preventExtensions(obj);
尝试扩展新属性: 禁用
2. 密封对象: 防扩展的基础上,禁止配置或删除每个属性
其实就是将每个属性的configurable设置为false
仅能读写属性值
Object.seal(obj);
尝试扩展新属性: 禁用
尝试修改属性的特性: **允许**
尝试删除: 禁止
尝试修改属性值: 允许
问题: chrome中,密封后依然可修改属性的特性
3. 冻结对象: 禁止对对象做任何修改,包括属性值
Object.freeze(obj)
尝试扩展新属性: 禁用
尝试修改属性的特性: 禁止
尝试删除: 禁止
尝试修改属性值: 禁止
eg:
三个级别: 不可逆
1. 防扩展: 禁止扩展新属性
其实就是设置对象的Extensible属性为false
Object.preventExtensions(obj);
尝试扩展新属性: 禁用
2. 密封对象: 防扩展的基础上,禁止配置或删除每个属性
其实就是将每个属性的configurable设置为false
仅能读写属性值
Object.seal(obj);
尝试扩展新属性: 禁用
尝试修改属性的特性: **允许**
尝试删除: 禁止
尝试修改属性值: 允许
问题: chrome中,密封后依然可修改属性的特性
3. 冻结对象: 禁止对对象做任何修改,包括属性值
Object.freeze(obj)
尝试扩展新属性: 禁用
尝试修改属性的特性: 禁止
尝试删除: 禁止
尝试修改属性值: 禁止
eg:
<script> "use strict"; var smith={id:1234,ename:"smith",age:19}; <span style="background-color: rgb(255, 0, 0);">//1:禁止扩展</span> /*Object.preventExtensions(smith); smith.salary=10000; console.log(smith.salary);//undefined//每个属性的configurable=false */ <span style="background-color: rgb(255, 0, 0);">//2:seal密封,打包</span> /*Object.seal(smith); //尝试扩展新属性:已禁用 smith.salary=10000; console.log(smith.salary); //尝试修改属性的新特性,仍然可用 Object.defineProperty(smith,"id",{ writable:false//将id设置为只读,说明现在的浏览器对ES5的防篡改有漏洞 }) //尝试删除属性 smith.id=1001; console.log(smith.id); */ <span style="background-color: rgb(255, 0, 0);">//3:冻结对象</span> Object.freeze(smith); //尝试修改属性值:已禁用 console.log( Object.getOwnPropertyDescriptor(smith,"age"); ); //尝试扩展新属性 smith.salary=1000; console.log(smith.); </script>
相关文章推荐
- 一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别
- [HDU 4289]Control[网络流][拆点]
- 闭关日记 Day02
- iOS-UIDynamic物理仿真-重力、碰撞
- Deep Learning模型之:CNN卷积神经网络(二) 文字识别系统LeNet-5
- loadrunner Fast learning Second Day
- Jsoup入门
- Object.create
- java7新特性之—String values in a switch statement
- android-自定义控件之液位指示器
- Android——区别DVM与JVM (2)
- hash_map快于STL中的map
- 原型链的继承
- python去掉字符串中的空白字符
- Collaborative Filtering
- private 与 public的区别
- 二叉树的遍历(递归,非递归)实现
- tesseract 简单例子
- 在Android Studio中如何添加GSON 并使用GsonFormat快速实现实体类
- domino数据同步到sql server