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

面试题 相关文章推荐
*p++ 自增p 还是p所指向的变量
Jul 16 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
Dec 23 面试题
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
Jun 07 面试题
恶意软件的定义
Nov 12 面试题
linux面试题参考答案(5)
Sep 01 面试题
linux下进程间通信的方式
Jan 23 面试题
非功能性需求都包括哪些方面
Oct 29 面试题
What is EJB
Jul 22 面试题
JavaScript获取当前url根目录(路径)
Feb 19 面试题
线程问题:wait()方法是定义在哪个类里面
Jul 07 面试题
介绍一下Java中的static关键字
May 12 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
Mar 16 面试题
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源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
PHP四大安全策略
2014/03/12 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python实现flappy bird游戏
2018/12/24 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Django url 路由匹配过程详解
2021/01/22 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
Linux的主要特性
2016/09/03 面试题
中科软笔试题和面试题
2014/10/07 面试题
可口可乐广告词
2014/03/20 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
公司应聘自荐书
2014/06/14 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL