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

面试题 相关文章推荐
我的applet原先好好的, 一放到web server就会有问题,为什么?
May 10 面试题
类的核心特性有哪些
Jan 01 面试题
编码实现字符串转整型的函数
Jun 02 面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 面试题
Ado与Ado.net的相同与不同
Dec 08 面试题
程序员机试试题汇总
Mar 07 面试题
MYSQL相比于其他数据库有哪些特点
Jul 19 面试题
简单叙述一下MYSQL的优化
May 09 面试题
Java语言的优势
Jan 10 面试题
一套中级Java程序员笔试题
Jan 14 面试题
介绍一下Java中标识符的命名规则
Feb 03 面试题
程序员跳槽必看面试题总结
Jun 28 面试题
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实现获取文章内容第一张图片的方法
2014/11/04 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
window.open的功能全解析
2006/10/10 Javascript
JScript中的undefined和"undefined"的区别
2007/03/08 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
python算法学习之基数排序实例
2013/12/18 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python中altair可视化库实例用法
2021/01/26 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
关于旷工的检讨书
2014/02/02 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
详解Redis集群搭建的三种方式
2021/05/31 Redis
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL