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

面试题 相关文章推荐
用C语言实现文件读写操作
Oct 27 面试题
VC++笔试题
Oct 13 面试题
Kingsoft金山公司C/C++笔试题
May 10 面试题
类成员函数的重载、覆盖和隐藏区别
Jan 27 面试题
Android笔试题总结
Nov 29 面试题
分布式数据库需要考虑哪些问题
Dec 08 面试题
2019史上最全Database工程师题库
Dec 06 面试题
什么是跨站脚本攻击
Dec 11 面试题
武汉某公司的C#笔试题面试题
Dec 25 面试题
linux面试题参考答案(4)
Jan 28 面试题
什么是makefile? 如何编写makefile?
Aug 08 面试题
如何开发安全的AJAX应用
Mar 26 面试题
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 header示例代码(推荐)
2010/09/08 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
node.js中watch机制详解
2014/11/17 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
人机交互程序 python实现人机对话
2017/11/14 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
Django框架安装方法图文详解
2019/11/04 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Python定义一个函数的方法
2020/06/15 Python
python如何处理程序无法打开
2020/06/16 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
《最可爱的人》教学反思
2014/02/14 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
单位委托书
2014/10/15 职场文书
2014年质量工作总结
2014/11/22 职场文书
公司备用金管理制度
2015/08/04 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python