如何开发安全的AJAX应用


Posted in 面试题 onMarch 26, 2014
AJAX技术已经是现在最流行的Web应用开发技术了,但是与此同时,Web应用也成了这个IT架构中安全最薄弱,最容易受到攻击的部分,AJAX应用相比较与传统的Web应用,大大增加了客户端与服务器之间的交互,同时也使得一些后台的业务逻辑接口暴露给了客户端,如果服务器端没有足够的保护或者没有对客户端请求进行合法性校验,攻击者就会趁虚而入,进入系统内部进行破坏。开发人员如何才能在开发工程中保证AJAX应用的安全呢? 一下是我搜集资料总结出来的一些checklist和best practices,希望对大家有所帮助。
1.输入校验,这一部分已经在我的上一篇blog 如何进行Web应用的安全测试和输入校验 中进行了说明,进行输入校验有两种方式,一种是Blacklisting: 就是列出所有非法的输入进行屏蔽;另外一种是Whitelisting: 就是列出合法的输入格式,只要不属于这种格式都划为非法格式进行屏蔽。安全方面来说,Whitelisting比Blacklisting有更高的安全性。
2.尽量避免动态的生成和执行code, 在javascript中尽量避免使用eval函数。
3.在使用json对象之前对它进行校验,因为json对象也是javascript的一部分,所以json对象里面也有可能包含有有害的代码,所以在使用之前要对json进行校验,以保证json对象是安全的,校验的方法可以使用正则表达式进行也可以使用一个json parser进行转换,然后再使用。
4.在引用不可信的内容的时候尽量使用iframe的方式。
5.不要一刀切的使用AJAX, AJAX的作用是提高应用的交互性,所以之需要在交互性比较强的地方才使用ajax, 其他如之需要展示信息的地方使用传统的方式安全性更高。
6.尽量使交互的网络传输量最小,ajax频繁的交互不但对应用性能有影响,对安全也是很大的隐患,所以要尽可能在最需要的地方使用ajax, 不要用ajax执行大的局部刷新操作
7.最后可以使用一些ajax的安全检查工具进行检查。

Tags in this post...

面试题 相关文章推荐
PHP如何删除一个Cookie值
Nov 15 面试题
JDK安装目录下有哪些内容
Aug 25 面试题
广州御银科技股份有限公司试卷(C++)
Nov 04 面试题
北京SQL新华信咨询
Sep 30 面试题
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
Aug 13 面试题
Linux上比较文件的命令都有哪些
Sep 28 面试题
什么是Linux虚拟文件系统VFS
Jan 31 面试题
什么是虚拟内存?虚拟内存有什么优势?
Feb 19 面试题
类的返射机制中的包及核心类
Sep 12 面试题
Java面试题汇总
Dec 06 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
Mar 16 面试题
SOA面试题:如何在SOA中实现松耦合
Jul 21 面试题
Ajax的工作原理
Dec 04 #面试题
什么是GWT的Module
Jan 20 #面试题
Prototype如何实现页面局部定时刷新
Aug 06 #面试题
如何开发一个JQuery插件
Jul 28 #面试题
什么是GWT的Entry Point
Aug 16 #面试题
AJAX的优缺点都有什么
Aug 18 #面试题
DOM和JQuery对象有什么区别
Nov 11 #面试题
You might like
php数字游戏 计算24算法
2012/06/10 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
python的mysqldb安装步骤详解
2017/08/14 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python实现动态创建类的方法分析
2019/06/25 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
创业大赛策划书
2014/03/01 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
高中政治教师教学反思
2016/02/23 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书