如何开发安全的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面试题大全
Oct 16 面试题
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
May 24 面试题
什么是Rollback Segment
Apr 22 面试题
P/Invoke是什么
Jul 31 面试题
C#怎么让一个窗口居中显示?
Oct 20 面试题
const和static readonly区别
May 20 面试题
设计模式的基本要素是什么
Apr 21 面试题
介绍一下EJB的体系结构
Aug 01 面试题
EJB的角色和三个对象
Dec 31 面试题
Java编程面试题
Apr 04 面试题
JSF界面控制层技术
Jun 17 面试题
J2EE包括哪些技术
Nov 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
运动会通讯稿300字
2014/02/02 职场文书
优秀家长事迹材料
2014/05/17 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015年技术员工作总结
2015/04/10 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
PHP 时间处理类Carbon
2022/05/20 PHP
linux目录管理方法介绍
2022/06/01 Servers