如何开发安全的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面试题及答案一
Jun 18 面试题
PHP高级工程师面试问题推荐
Jan 18 面试题
error和exception有什么区别
Oct 02 面试题
华美博弈C/VC工程师笔试试题
Jul 16 面试题
我看到了用指针调用函数的不同语法形式
Jul 16 面试题
SQL里面IN比较快还是EXISTS比较快
Jul 19 面试题
商得四方公司面试题(gid+)
Apr 30 面试题
作为网站管理者应当如何防范XSS
Aug 16 面试题
internal修饰符起什么作用
Dec 16 面试题
nohup的用法
Nov 26 面试题
解决方案设计综合面试题
Aug 31 面试题
西安夏日科技有限公司Java笔试题
Jan 11 面试题
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常用数组函数实例小结
2016/12/29 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
js CSS操作方法集合
2008/10/31 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
利用JS制作万年历的方法
2017/08/16 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
详解Anaconda 的安装教程
2020/09/23 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
高一新生军训感言
2014/03/02 职场文书
学生会部长竞聘书
2014/03/31 职场文书
大国崛起观后感
2015/06/02 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL