`
lunch
  • 浏览: 77555 次
  • 性别: 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气象业务系统源码,根据需求完善对应的功能,做到尽可能的覆盖气象业务的需求。 JavaScript气象业务系统源码,根据需求完善对应的功能,做到尽可能的覆盖气象业务的需求。JavaScript气象业务系统源码,...

    【JavaScript源代码】浅谈vue 移动端完美适配方案.docx

    浅谈vue 移动端完美适配方案  前言:根据最近做的一个医疗手机端项目总结在移动端,vue怎么在不同屏幕上做根据不同屏幕大小适配  1、适配方案  在本项目中我所使用的vue移动方案是使用amfe-flexible 和 postcss-...

    《浅谈JavaScript系列》.pdf

    以下是从《浅谈JavaScript系列》中提炼出的核心知识点。 1. 面向对象编程:JavaScript虽基于对象而非完全的面向对象语言,但通过原型链实现了继承。JavaScript中,对象通过原型继承属性和方法,每个对象都有一个...

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

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

    浅谈用HTML和JavaScript修饰Web页.pdf

    "浅谈用HTML和JavaScript修饰Web页.pdf" 本文主要讨论如何使用HTML和JavaScript修饰Web页,提高Web页的交互性和用户体验。HTML是静态网页的基础,而JavaScript可以使网页更加交互性。文章首先介绍了HTML的基本概念...

    浅谈关于JavaScript脚本语言的学习.pdf

    "浅谈关于JavaScript脚本语言的学习" JavaScript脚本语言的基本特点: 1. 简单性:JavaScript是一种解释性语言,不需要提前进行编译,在程序运行过程中由浏览器边解释边执行,因此不需要额外的运行环境。 2. 跨...

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

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

    深入浅出JavaScript

    深入浅出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与实例

    "深入浅出JavaScript" 是一套专门针对JavaScript初学者和进阶者设计的学习资料,旨在帮助读者全面理解这门语言,并通过实例加深对概念的理解。这本书的中文版——"Head First JavaScript",以其独特的视觉和互动式...

    深入浅出Javascript(分为两卷)part2

    深入浅出Javascript 深入浅出Javascript

    深入浅出javascript

    write JavaScript code that makes web pages do all kinds of cool things that are impossible with HTML alone. If you can answer “yes” to any of these: this book is for you. this book is not for you. ...

    《深入浅出JavaScript》part1

    《深入浅出JavaScript》(Beginning JavaScript with DOM Scripting and Ajax)高清扫描版[PDF].part1

Global site tag (gtag.js) - Google Analytics