如何开发安全的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...

面试题 相关文章推荐
同步和异步有何异同,在什么情况下分别使用他们?举例说明
Feb 27 面试题
Java TransactionAPI (JTA) 主要包含几部分
Dec 07 面试题
JAVA和C++区别都有哪些
Mar 30 面试题
编写函数,将一个3*3矩阵转置
Oct 09 面试题
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
May 18 面试题
Oracle的内存结构(Memory structures)
Jun 10 面试题
Linux上比较文件的命令都有哪些
Sep 28 面试题
性能测试工程师的面试题
Feb 20 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
Sep 28 面试题
为什么需要版本控制?
Aug 08 面试题
配置管理计划的主要内容有哪些
Jun 20 面试题
Python文件操作的面试题
Jun 22 面试题
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中的函数嵌套层数限制分析
2011/06/13 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
Laravel 5.3 学习笔记之 错误&日志
2016/08/28 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
理解AngularJs指令
2015/12/10 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
pandas值替换方法
2018/07/10 Python
Windows下python3.7安装教程
2018/07/31 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
Java语言程序设计测试题判断题部分
2013/01/06 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
运动会四百米广播稿
2014/01/19 职场文书
中学生打架检讨书
2014/02/10 职场文书
教师考核材料
2014/05/21 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
清洁工工作总结
2015/08/11 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Java 多态分析
2022/04/26 Java/Android