如何开发安全的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 10 面试题
什么是聚集索引和非聚集索引
Jan 17 面试题
介绍一下.net和Java的特点和区别
Sep 26 面试题
上海期货面试题
Jan 31 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
Oct 29 面试题
C#可否对内存进行直接的操作
Feb 26 面试题
当当网软件测试笔试题
Nov 24 面试题
EntityManager都有哪些方法
Nov 01 面试题
介绍一下Mysql的存储引擎
Feb 12 面试题
MySQL面试题目集锦
Apr 14 面试题
Exception类的常用方法
Jun 16 面试题
UNIX文件名称有什么规定
Mar 25 面试题
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
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
javascript event 事件解析
2011/01/31 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
Vue.js用法详解
2017/11/13 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python3处理含有中文的url方法
2018/05/10 Python
python 实现A*算法的示例代码
2018/08/13 Python
python操作excel的方法
2018/08/16 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
保安的辞职报告怎么写
2014/01/20 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
学校交通安全责任书
2014/08/25 职场文书
春晚观后感
2015/06/11 职场文书
法制教育观后感
2015/06/17 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python
python脚本框架webpy模板控制结构
2021/11/20 Python
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技