发新话题
打印

[讨论]在Web方面是否可以对用户提交的行为进行判断

[讨论]在Web方面是否可以对用户提交的行为进行判断

议题提交:尘风
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

此讨论议题目由尘风首发桂林电子工业学院论坛 后由EvilOctal转入邪恶八进制信息安全团队

主要是针对绕过客户端校验对WEB服务或者基于WEB的应用发起的攻击
场景描述:
前提,我们不准被客户端进行操作(如对文件的操作或者对用户系统操作等)
假设我现在有一个WEB应用,针对某页面有提交动作,但是必须限定用户只能通过页面的提交BUTTON进行提交,这样在用户请求在客户端可以做一次验证。
但是对于用户来说,他可以在浏览器直接输入URL(假设用户已经知道接受提交的服务)进行提交,或者他可以使用其他工具,进行数据的提交。
现在要实现的功能就是,可以对用户是通过页面BUTTON提交还是通过其他方式提交做判断,我想如果能够实现的话,那么这样应该可以减轻服务器的负担,这样对一些常见的绕过客户端校验的攻击行为就可以做一些筛选。


此功能是针对目前做的安全框架考虑是否要实现的功能,不过目前还不确定是否能够实现,和同事讨论他说不可行。
考虑了以下实现的可行性,
一,通过添加隐藏字段(当然不是WEB页面中的HIDDEN),在提交到服务器时针对此字段做检测看提交URL中是否包含此字段,但是用户可以通过一些网络分析工具对传输的内容进行分析,判断含有哪些字段。针对此,可以对一些关键内容通过HTTPS来进行通信,这样用户得到的内容时加密过的。
脚本语言,对所有WEN页面通过BUTTON提交的行为触发一个事件,来通知服务器,用户是通过页面提交的。
其他,上次冰雪说的通过SESSION控制或者其他方式。

考虑了以上方法,但没有去具体实现,也不知道是否可行,比如隐藏字段通过什么来实现,或者脚本语言通过什么机制通信,以及session的话怎么来实现。
所以想请教下这种功能的可行性,如果可行,实现方式。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

假如对方使用的浏览器软件是我编写的或许上面的描述还有实现的可能。个人意见,楼下继续。

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

核心问题就是怎么判断和禁止非法用户使用发包的方式来进行操作。
因为发包的方式看起来就和正常的浏览没有什么区别,因此是一个比较难以判断的问题。
冰血封情说的session方式具体是什么呢?
那些好像永远都不会停的雪。那一季永远不结束的冬天。

TOP

Jony的方法只能判断数据提交到哪,并不能判断是经过什么方式提交的,我希望是对行为进行判断,不知道可行吗
当然,如果允许对客户端进行控制的话,应该可以实现,但前提我们假设客户端不对我们开放

TOP

从http协议的根本来说
是无法实现的事情
button只是客户端的显示而已
具体到http里
就是put,post或者get
通过button和直接提交或者通过特殊软件构造
是没有本质区别的

所有的隐藏的属性
在http里面都能看到
连抓包都不用。直接看源代码就有了。
所以不更改客户端来达到这种方案从理论上是行不通的。
连入侵者都敢说自己在做网络安全。关键大家是真正为安全作过什么?

TOP

个人感觉只能判断到是POST还是get 并不能判断是不是通过指定的button提交的。。。 添加hidden还可以判断一下。但楼主说这样好象不行是不是

还有 冰xx的session是什么狗屁方式??

曾因酒醉鞭名马 生怕情多累美人

TOP

毛病甚多阿

一、
button提交 = post
输入地址 = get

二、
两种方式均不能减轻服务器负担,或者说跟本与服务器负担无关

三、
上楼的“还有”

---------------------
asp接收方式:
request.from 仅接收post方式的内容
request.querystring 仅接收get方式的内容
request 接收两者的内容

能防止一种两种不是都可以了??
风,有时静,有时猛 风,有时喜,有时恨 风,有时大,有时小 我,我是风,我爱风 我是风流的风

TOP

冰雪提到的session方法
据我猜测
可能是根据session验证用户的合法性以后
再接受以此session发出的post或者get的内容
就是达到防止伪造post或者get的目的
不过有两点
第一.只能防止没有正常登陆的post或者get
第二.不能防止已经有了正常登陆cookie的伪造的post和get
连入侵者都敢说自己在做网络安全。关键大家是真正为安全作过什么?

TOP

其实最土的办法是,当你浏览一个网页的时候,按ctrl+o,然后输入以"javascript:"开头的js代码,就可以更改网页的内容了,比如要post的非法数据,最后提交一个button的click事件,照样是提交上去,这样似乎你https还是用session都没用的.

再则,现在httpdebug的工具也是多的离谱...
流氓会武术,谁都挡不住. http://hi.baidu.com/zvrop

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

和服务器性能相关是肯定的了
假设我能够判断的话,那在请求到达服务器之间这类的请求就已经被过滤掉了,服务器不用处理,那就是减轻服务器负担
通过SESSION的方式,应该是在session中添加特殊标记类,但是这种对已经人证过的用户通过那种方式提交是没区别的
目前分析看来,不通过控制客户端应该不可能对不同的方式进行判断


如果控制客户端的话有可能,比如我可以在提交时加个特殊的标记,可采用加密方式使其他人对此标记不可见,但可以在入侵检测系统中通过解密来判断这个标记是否合法,然后判断是否需要过滤此类请求,或者产生安全警告类,让管理员处理
我觉得此问题根本在于怎么插入一个私有标签,并判断其合法性.
其他还有什么方法直接判断的,目前我没想到

TOP

楼主的意思好象是要判断客户端提交数据的方式.而服务端所能利用的就是客户端已经提交的数据.
这就只能根据这些已经提交的数据来进行判断提交方式.
可是几乎所有的数据都可以不通过web浏览器来提交啊,web浏览器能做的,偶觉得其他程序也能做哦.
就象一个管道的一侧有几种进水方式,可是另外一侧出去的都是水啊,谁能从那些水来判断发送段是什么供水设施呢..
源静则流清 本正则丰茂 内修则外理 形端则影直

TOP

发新话题