`
lunch
  • 浏览: 76944 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

javascript入侵业务安全浅谈

阅读更多

        大家好,等会我说的大家可能都已经遇到过了,也或许没有遇到过,再或许没有从这方面考虑过.接下来我们通过一个小例子来说明一下。

        我们在每个项目中,几乎都会用到[checkbox]组件。比如批量删除,批量审核等等...,举个简单的例子,如下图:

       

        这是一个简单的批量删除演示,大家可以看到其中"李四"和"刘六"二人是禁止删除的,因为其对应的checkbox组件是禁用的。此我们稍微考虑一下,我们能否在浏览器端将李四对应的checkbox修改成可用。如果能那显然就破坏了正常的业务逻辑和系统的安全性,当然有人会说我会在后台验证,对没错!但我们今天只是拿来讨论一下前台的东西*^_^*

        大家肯定都晓得可用在地址栏直接运行js代码,不过大家有想过通过在地址栏运行的js代码来改变页面中某些组件的状态或者value吗?

        我们先看一下对应上面那个批量删除的HTML代码:

xml 代码
           
  1. href="#">添加a>      <a href="#">删除a>  
  2. <hr size="1" width="100%">  
  3. <input id="isDel" type="checkbox" value="张三">  张三   男  石家庄  本科<br>  
  4. <input id="isDel" type="checkbox" value="李四" disabled="disabled">  李四  女  太原市  专科<br>  
  5. <input id="isDel" type="checkbox" value="王五">  王五  女   北京市    硕士<br>  
  6. <input id="isDel" type="checkbox" value="刘六" disabled="disabled">  刘六  男  石家庄  博士<br>  

         我们可用看到checkbox的id为[isDel],此时我便可用通过id在地址栏得到该对象。比如我们使用document.all.isDel来得到的是一个数组,包含了上面四个checkbox,同样我们也可以得到具体的某个checkbox。比如document.all.isDel[1],用这句代码来得到对应李四的checkbox,因为数组下标是从零开始的。如图:

       

         我们在得到该对象之后想再修改其状态或修改它的value就易如反掌,我们只需运行alert(document.all.isDel[1].disabled="") ;就可用将李四的禁止删除状态改为可用删除状态,如图:

        

        这样看来李四就可用删除了,当然,前提是你后台的验证不是很完善的情况下,所以这也对我们的后台验证提出了更高的要求。这里说明一下在地址栏运行javascript的时候一定使用alert语句,呵呵,如果不使用的话可用自己试一下效果。

       写这篇短文也没有别的意思,就是想和大家讨论交流一下类似的问题,像这种情况举一反三可用落实到很多具体的场景,也不仅仅局限于checkbox这种组件。如果有业内的大牛对这方面有研究那就和我们分享一下吧。

       谢谢您耐心看完此文。

分享到:
评论
20 楼 afcn0 2007-11-18  
这个东西也不能太认真,毕竟很多东西不是需要那么安全的,各位又不是搞007那工作的,js验证本来不错,服务器信赖客户端在客户端足够健壮安全情况下也不是不可以,当然就是服务器验证很好,但是就能说安全了吗,远远不够,这个web基本就没有完全安全的东西,想要安全,基本是个非常困难的东西,大概只有007可以实现吧
19 楼 ctfzh 2007-11-18  
up2vs 写道

前端非异步请求的JS验证,仅仅是为了第一时间告诉用户一些操作上的失误信息。如果完全放手到客户端脚本。而服务器端不错任何安全认证措施。我想这个系统不能称作是一个完善的系统。



非常认同up2vs的观点.支持
18 楼 up2vs 2007-11-17  
spiritfrog 写道
可以根据项目需求而定,如果安全要求较高,就在js前端和s系统都作验证,一般情况下只要js验证就够了,ajax验证也是个不错的方式,但也不宜滥用。


前端非异步请求的JS验证,仅仅是为了第一时间告诉用户一些操作上的失误信息。如果完全放手到客户端脚本。而服务器端不错任何安全认证措施。我想这个系统不能称作是一个完善的系统。

17 楼 spiritfrog 2007-11-17  
可以根据项目需求而定,如果安全要求较高,就在js前端和s系统都作验证,一般情况下只要js验证就够了,ajax验证也是个不错的方式,但也不宜滥用。
16 楼 fyting 2007-11-14  
标题党,鉴定完毕
15 楼 afcn0 2007-11-14  
但是目前也不能完全这么说,javascript的角色已经有点变化了,Ajax里面js可不是验证这么简单,已经变成客户端可以信赖的逻辑程序语言,拥有大量类库,所以很多人过度信赖js也是有原因的,但是验证说到底还是s系统的问题,只不过现在很多时候这个问题比较模糊,在大量复杂js操作下不容易发觉
14 楼 wsx860529 2007-11-14  
afcn0 写道
后台验证是最基本的.基本可以说任何web请求都是不可信的,任何get post都是可以伪造的,所以s系统一定要是一个验证非常严谨的系统,而UI只不过是为了使用户更加快速知道自己输入的信息有误一种方法,不用等待一次一次提交后再修改数据的麻烦了,这才是b系统和s系统

正解,javascript是为了达到前台更加人性化的手段,后台验证才是基本。
13 楼 afcn0 2007-11-13  
后台验证是最基本的.基本可以说任何web请求都是不可信的,任何get post都是可以伪造的,所以s系统一定要是一个验证非常严谨的系统,而UI只不过是为了使用户更加快速知道自己输入的信息有误一种方法,不用等待一次一次提交后再修改数据的麻烦了,这才是b系统和s系统
12 楼 laiseeme 2007-11-13  
总不能前台验证一次,后台验证一次,这个是js的硬伤了
11 楼 lunch 2007-11-13  
但是js有能力破坏原有的DOM的Attribute、State、 Value。所以js就像把双刃剑。
10 楼 sp42 2007-11-12  
没有js 也是有DOM;
有js,也是有DOM,
反正B/S表示层的本质工作都是在DOM上呈现
所以,JS/AJAX这个角度看只是控制UI的辅助手段,和安全没有直接联系。
9 楼 boom 2007-11-12  
既然从页面过来的数据都是可以伪造的,那么页面上的验证还有没有必要,个人认为根据情况重要数据操作在后台+前台验证,无关紧要的操作,就不要再后台加了,如果每个操作都要验证,无疑增加了后台代码量,每多一行代码,就多一分BUG存在的可能性
8 楼 lunch 2007-11-12  
afcn0 写道
楼主这个web安全讨论如果扩大一点,可以讨论
1.web基于cookie认证是否在级线器或者共享上网或者wifi当中带来重大问题,是否需要加入密钥验证
2.目前web开发有依赖js的趋势,导致bs不分,导致安全隐患大幅度增加,是否应该改变开发模式成为b系统和s系统,如果s系统能够保证为安全,那b系统至少不会加入s系统不存在的安全问题,当然和b平台相关问题不是s系统可以预见的
3.web到底适合不适合一些需要极度安全的场景,web这种匿名,无状态,发cookie,基于无连接的post get请求是否符合安全系统的要求
只是个人看法,当然还没包括各种js解释器是否存在安全隐患,溢出activex各种问题了,以及是否浏览器应该加大对于html js的保护力度呢


afcn0分析的更加深入一些,关于b/s系统的见解也和fins的差不多,就是只有b系统和s系统。
见:世上没有B/S系统,只有B系统和S系统
我们现在面临的问题都是这样,随着客户体验要求的提高,和整个行业的发展趋势,js在开发过程中扮演着越来越多的角色,但这也带来了不少的问题,所以我们必须选择一个合适的折中点。
7 楼 unifly 2007-11-12  
呵呵,还是有人提出来了,自己也想过此问题,限于水平也没想出个道道儿……
搬凳子等达人给说道说道……
6 楼 heimu 2007-11-12  
增强后台验证机制,UI不管怎么说也不过是给人看得
5 楼 myy 2007-11-12  
afcn0 写道
web根本就没什么安全,地址栏写js太菜鸟了,firebug或者append一个textarea再eval那更加方便,简单来说,任何一个get或者post请求都是不可信,都是可以伪造的


说到根子上了!

所以整天讨论 js安不安全啊,ajax安不安全啊,逻辑放在前端安不安全啊...这些根本没有意义!

B/S安不安全,不在于你的防范措施有多强,而在于想高破坏的人的水平有多高!
4 楼 afcn0 2007-11-11  
楼主这个web安全讨论如果扩大一点,可以讨论
1.web基于cookie认证是否在级线器或者共享上网或者wifi当中带来重大问题,是否需要加入密钥验证
2.目前web开发有依赖js的趋势,导致bs不分,导致安全隐患大幅度增加,是否应该改变开发模式成为b系统和s系统,如果s系统能够保证为安全,那b系统至少不会加入s系统不存在的安全问题,当然和b平台相关问题不是s系统可以预见的
3.web到底适合不适合一些需要极度安全的场景,web这种匿名,无状态,发cookie,基于无连接的post get请求是否符合安全系统的要求
只是个人看法,当然还没包括各种js解释器是否存在安全隐患,溢出activex各种问题了,以及是否浏览器应该加大对于html js的保护力度呢
3 楼 lunch 2007-11-11  
afcn0 写道
web根本就没什么安全,地址栏写js太菜鸟了,firebug或者append一个textarea再eval那更加方便,简单来说,任何一个get或者post请求都是不可信,都是可以伪造的


呵呵,地址栏写js也不是为了调试:) 只是为了说明问题,firebug着实好用。
2 楼 LucasLee 2007-11-11  
是啊,改HTML,JS完全都可行。多年前我用的方法是下载网页,直接修改内容,再打开执行(可能需要修改一些URL链接,因为原来可能用的是相对路径)。
1 楼 afcn0 2007-11-11  
web根本就没什么安全,地址栏写js太菜鸟了,firebug或者append一个textarea再eval那更加方便,简单来说,任何一个get或者post请求都是不可信,都是可以伪造的

相关推荐

    数据库大作业-基于JavaScript银行业务管理系统源码.zip

    数据库大作业-基于JavaScript银行业务管理系统源码.zip数据库大作业-基于JavaScript银行业务管理系统源码.zip数据库大作业-基于JavaScript银行业务管理系统源码.zip数据库大作业-基于JavaScript银行业务管理系统源码...

    《深入浅出JavaScript》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一篇关于获取《深入浅出JavaScript》电子书的信息。下面我们将基于这个前提,围绕“深入浅出JavaScript”这一主题进行知识点的展开。 ### 深入浅出JavaScript概览 #### 一...

    浅谈JavaScript 库———jQuery, ExtJs 的对比研究

    ### 浅谈JavaScript库——jQuery与ExtJs的对比研究 #### 一、引言 随着Web 2.0和RIA(Rich Internet Applications)技术的普及,JavaScript作为一种前端开发的重要工具,逐渐占据了重要的地位。它不再仅仅是用于...

    javascript深入浅出

    ### JavaScript深入浅出 #### 一、前言与概述 《JavaScript深入浅出》是一本致力于帮助读者深入了解JavaScript编程语言的书籍。JavaScript作为现代Web开发不可或缺的一部分,其重要性不言而喻。本书通过深入浅出的...

    浅谈Javascript脚本语言在教学评价系统中的应用.pdf

    "浅谈Javascript脚本语言在教学评价系统中的应用.pdf" 本文档讲述了Javascript脚本语言在教学评价系统中的应用。Javascript是一种基于对象和事件的简单的描述性脚本语言,可以很容易地嵌入到HTML文件中。使用...

    浅谈JavaScript库——jQuery,ExtJs的对比研究.pdf

    "浅谈JavaScript库——jQuery,ExtJs的对比研究.pdf" 本文简要介绍了目前流行的JavaScript库,并对其中较为流行的两个库jQuery和ExtJs进行了较详细的介绍和对比研究。本文首先简要介绍了JavaScript库的概念和特点,...

    Javascript浅谈之引用类型

    引用类型(Reference type)引用类型是javascript中一种内部类型。它主要是当做一个指代,代替一个变量或者函数,当然在需要真实值时,又可以通过它寻找到真实值。 2.引用类型的结构引用类型的值时由两部分构成,一...

    浅谈javascript在网页制作中的应用.pdf

    3. **安全性能**:JavaScript运行在客户端,不会直接访问服务器文件系统,确保了用户数据的安全。 4. **嵌入式**:JavaScript代码可以直接嵌入HTML文档中,便于网页开发和维护。 在网页中添加JavaScript主要有两种...

    浅谈jQuery的应用.pdf

    标题:“浅谈jQuery的应用” 知识点: 1. jQuery简介:jQuery是一个继prototype之后的优秀JavaScript框架,由John Resig创建于2006年初。它简化了JavaScript以及Ajax编程,以“write less, do more”为宗旨,用更...

    基于JavaScript的入侵检测系统设计源码及前端实现

    本项目为信息安全领域的创新作品,设计了一套基于JavaScript的入侵检测系统。该系统源码包含197个文件,涵盖了45个SCSS样式文件、44个JavaScript脚本文件、18个CSS样式文件、13个JPG图片文件、12个Python脚本文件、...

    《浅谈JavaScript系列》.pdf

    Web前端学习资料,Javascript学习

    浅谈html转义及防止javascript注入攻击的方法.docx

    ### 浅谈HTML转义及防止JavaScript注入攻击的方法 #### 一、HTML转义的概念 在Web开发中,用户输入的数据经常会直接展示在网页上,例如在评论区、聊天室等场景。如果用户输入的数据中包含HTML标签或者JavaScript...

    浅谈JavaScript的全局变量与局部变量_.docx

    JavaScript中的变量管理是编程中非常基础且重要的概念,它涉及到变量的作用域、生命周期以及如何避免潜在的安全问题。本文将深入探讨JavaScript的全局变量与局部变量。 首先,我们要明白JavaScript的作用域划分标准...

    深入浅出JAVASCRIPT 中文版

    《深入浅出JAVASCRIPT 中文版》这本书正是为了帮助读者深入理解和掌握这种语言而编写的。 首先,JavaScript的基础知识包括变量、数据类型和操作符。变量是存储数据的地方,而数据类型则定义了变量能存储的数据种类...

    深入浅出JavaScript(中文版)

    你将从《深入浅出JavaScript(中文版)》学到什么?这么说你准备从写html和css的静态网页跃进到编写动态网络应用程序脚本了?这里就是起点。《深入浅出javascript》带你游历令人兴奋的交互式网页创建过程。为了启发你的...

    JavaScript的安全性和执行效率分析

    JavaScript的安全性和执行效率分析,kth文件,用caj看哈

    深入浅出JavaScript源代码.zip

    《深入浅出JavaScript源代码》是一本以实践为导向的JavaScript学习资源,包含了多个章节的源码实例,旨在帮助读者从基础到高级全面掌握JavaScript的核心概念和技术。这份压缩包中的文件涵盖了CSS样式表、图片、HTML...

    JavaScript安全从浏览器到服务端

    通过理解各类攻击手段和实施相应的安全措施,可以有效地提升Web应用程序的安全等级,防止数据泄露和系统被入侵。无论是前端还是后端的开发者,都应当对安全问题保持足够的警惕,并不断学习和实践安全开发的最佳实践...

    深入浅出JAVASCRIPT

    深入浅出JavaScript 深入浅出JavaScript 深入浅出JavaScript

    深入浅出JAVASCRIPT+中文版.pdf

    深入浅出JAVASCRIPT+中文版

Global site tag (gtag.js) - Google Analytics