KeyFansClub

首页 » - 特色讨论区 - » 键社茶餐厅 » [严重警告] 从现在开始不要看MDK的帖子,并安装弹出窗口杀除器....MDK居然利用论
Prz - 2004/10/7 0:29:00
以下引用Taishen在2004-10-6 23:36:06的发言:
是5×1111+4444KP…………全扣起了,王二的已经归还,管理员的就充公算了=v=|||
MAGI2要不要把帐号改名为MAGI4呢?呵呵...


干脆帮我改成 Misha 算了,我IRC一直用这个的....谢了! >_<
Taishen - 2004/10/7 0:39:00
好...两位的ID都改好了,日后登录时记得用新ID名...
芽依子 - 2004/10/7 0:39:00
改了......真高兴.......感谢............已经重新登陆了....
zhangmdk - 2004/10/7 0:44:00
以下引用Taishen在2004-10-6 23:36:06的发言:
是5×1111+4444KP…………全扣起了,王二的已经归还,管理员的就充公算了=v=|||
MAGI2要不要把帐号改名为MAGI4呢?呵呵...


充公就充公吧,不过小小透露一下第五个是谁好不好?  XD

取消SESSIONID……总之不是完全做法。
而且现在的COOKIE是MD5加密的,所谓的全文COOKIE加密又是什么?(爆

其实只要允许保存一种东西(例如COOKIE),然后下次可以不输入密码自动登陆。就一定可以伪造……
SESSION的伪造因为在是服务器处随机产生,所以只能在被伪造者在线有SESSIONID的情况下,成功几率要比COOKIE伪造小的说……
芽依子 - 2004/10/7 0:49:00
以下引用zhangmdk在2004-10-7 0:44:18的发言:


充公就充公吧,不过小小透露一下第五个是谁好不好?  XD

取消SESSIONID……总之不是完全做法。
而且现在的COOKIE是MD5加密的,所谓的全文COOKIE加密又是什么?(爆

其实只要允许保存一种东西(例如COOKIE),然后下次可以不输入密码自动登陆。就一定可以伪造……
SESSION的伪造因为在是服务器处随机产生,所以只能在被伪造者在线有SESSIONID的情况下,成功几率要比COOKIE伪造小的说……


事情终于平反.....饮得杯落啦.....
Taishen - 2004/10/7 0:54:00
嗯……mdk先说说另外那4个是谁?我都不知道漏了哪一个……
session确实是有随机密码在防护着的,所以确实只有id的主人在线而又被盗取了cookie的情况下才有被伪造的可能……
Prz - 2004/10/7 5:10:00
.......这样说来,难道我的cookie被MDK偷了? -_-|||||| 汗,这小子..........不,是这JS.....
Prz - 2004/10/7 5:14:00
MD5不是加密,只是签名而已。
全文加密很简单,把所有需要保存cookie的内容在服务器端包装好,使用密码或者公匙加密,读取的时候采用二进制方式读入,在服务器端解码,客户端从头到尾都不会知道cookie里面到底有什么。
zhangmdk - 2004/10/7 12:41:00
我知道了,是不是类似网页密匙加密的形式?
不过那样也是无用的。

因为你加密后的数据也需要传到客户端,然后从客户端传到服务器解密。
客户端根本不需要密匙,那密匙加密后的COOKIE和现在的MD5算法加密没有什么实质性的区别。
随机一个密匙,将最后一次的密匙存入对应的表,COOKIE发送和接受的时分别加密解密一次。说白了,也只是改变了COOKIE伪造的内容而已……

因为你服务区端的密匙永远是存在的,所以客户端完全不需要去考虑这个内容是否加密了,就合现在的MD5一样,只不过得到的不是明文而已……因为MD5是不可逆算法,无法破解只能靠碰撞,而加密算法都是属于可逆算法,也有被破解的可能,特别是源码被偷了之后。

只有让客户端完全不接触COOKIE,才可以防止COOKIE的伪造……
让COOKIE里面只有SESSION ID和PASS,每次登陆的时候都会再次随机产生,也就是每次登陆的COOKIE都会变化,这样可以做到一定程度上防止伪造吧…………否则,看样子只有取消COOKIE这种东西了。
Prz - 2004/10/7 13:26:00
Cookie里面绑定IP地址,看你怎么办 -_-b
scegg - 2004/10/7 15:06:00
以下引用Misha在2004-10-6 23:05:22的发言:
....楼上....真米神已经发威了..... >_<
还有,人家scegg的意思估计是,SessionID将不再起作用,Cookie里面装的是你本人的用户密码,每次操作都需要直接对比密码,这样你的猜SessionID大法就失灵了... LOL

但是,这样做会导致数据库的流量和操作次数大大增加..........我觉得不妥,最好的办法是,对Cookie进行全文加密,或者在cookie里面附加内容数字签名,这样cookie就不可改了。


我是负责写KFC2核心WebService的,并不负责站点建设。我的所有函数调用都需要提供账户和密码,至于密码如何存放,那是站点页面处理的问题了。
zhangmdk - 2004/10/7 16:20:00
以下引用Misha在2004-10-7 13:26:40的发言:
Cookie里面绑定IP地址,看你怎么办 -_-b


这个...可以实现是可以实现……
通过绑定IP的C段或者B段。
不过会有一个问题,就是代理的问题。

这么来就是当登陆IP段不符合条件时COOKIE无效,除非不用代理上网,而且不会经常变更上网的IP段(例如公司用的IP段是一个,家里IP段是一个……绑定中国段?哇,那和没邦定有区别么? =0=)
而且还会有一个问题,例如我在家里上网存了一个COOKIE,然后我去公司上网变了段,这样家里的COOKIE也会一起失效,因为绑定段变了。
……

总之这个问题是头痛但是不能很好解决的问题。
就像我们明明知道电脑辐射对人体伤害很大,却很难离开电脑生活一样……只能尽量避免了。
Prz - 2004/10/7 21:39:00
"这个问题是头痛但是不能很好解决的问题。"

这有什么难得,你再仔细想想.......需要绑定中国段?......-_-bbbb
人说: 搞建设和搞破坏是两个截然不同的思考方式.......果然........搞破坏这么拿手,建设性思维就不敢恭维了......




"例如我在家里上网存了一个COOKIE,然后我去公司上网变了段,这样家里的COOKIE也会一起失效,因为绑定段变了。"

每次正确输入帐户,就在加密的Cookie里面建立一个绑定,根本不需要在服务器端更改任何记录,所以你的旧绑定也不会失效......只需要在Login的地方附加一个CheckBox,指明是否需要绑定就行了。比如在网吧,就不要绑定IP,这样就不会生成可持续使用的cookie,Session也是会维持到浏览器关闭为止。由于整个cookie是全文加密或者是使用了SHash算法签名的,不会存在受到更改的威胁,所以理论上可以建立数个绑定,同时作用。

哈哈,这样Taishen的"多重登陆"的功能就可以被进一步发挥,合体ID的所有使用者都可以免去每次输入密码的麻烦了。
zhangmdk - 2004/10/8 1:03:00
不一定。其实我只是按照我的“破坏”思维逆向考虑的……  - -

加密或者算法签名的目的是为了防止明文泄露,所以采用什么算法是另外回事,也和防止COOKIE伪造也毫无关系……除非不让客户端保存任何数据。

也就是说这个段的问题。
如果是拨号或者ADSL,还是要用至少C段的绑定。

按照你的说法……也就是将IP和COOKIE放在一起使用签名或者加密?
总之你必定有个一个机制来识别IP与COOKIE的关系,也就是某种加密算法了……
如果使用了不可逆算法,不在服务器端保存数据是不现实的。所以一定是加密算法,而且可逆,考虑到服务器处理能力,算法对服务器的负荷能力也需要考虑。
(貌似伪造就要看入侵者的算法破解能力了?)

-v-
我已经开始理解你说的COOKIE全文加密了,这么说来从一定程度上来防止伪造还真的要COOKIE的全文都加密,呵呵~~(看来这种算法还需要相当大的工作量来开发 - -|||)
wdx04 - 2004/10/8 13:45:00
用SSL如何?
Prz - 2004/10/8 14:29:00
以下引用zhangmdk在2004-10-8 1:03:16的发言:
不一定。其实我只是按照我的“破坏”思维逆向考虑的……  - -

加密或者算法签名的目的是为了防止明文泄露,所以采用什么算法是另外回事,也和防止COOKIE伪造也毫无关系……除非不让客户端保存任何数据。

也就是说这个段的问题。
如果是拨号或者ADSL,还是要用至少C段的绑定。

按照你的说法……也就是将IP和COOKIE放在一起使用签名或者加密?
总之你必定有个一个机制来识别IP与COOKIE的关系,也就是某种加密算法了……
如果使用了不可逆算法,不在服务器端保存数据是不现实的。所以一定是加密算法,而且可逆,考虑到服务器处理能力,算法对服务器的负荷能力也需要考虑。
(貌似伪造就要看入侵者的算法破解能力了?)

-v-
我已经开始理解你说的COOKIE全文加密了,这么说来从一定程度上来防止伪造还真的要COOKIE的全文都加密,呵呵~~(看来这种算法还需要相当大的工作量来开发 - -|||)


"加密或者算法签名的目的是为了防止明文泄露,所以采用什么算法是另外回事,也和防止COOKIE伪造也毫无关系……除非不让客户端保存任何数据。"

常见误解。加密算法是为了保证数据的安全,明文不被泄漏,正确;但是签名则是为了保证数据的完整性和数据源的合法性,两个不是一个概念。




"这么说来从一定程度上来防止伪造还真的要COOKIE的全文都加密"

不用...全文加密只是提供一种更好的保密性而已,使脚本使用的存取变量名都不可见,加大伪造的难度。事实上根本不需要使用全文加密就可以达到不可更改的效果。(参见以下对SHash的说明)




"如果使用了不可逆算法,不在服务器端保存数据是不现实的"

不正确。我提到了SHash算法,这种算法早就被应用到身份验证协议中了。所谓的SHash就是把一段需要签名的内容和一组密码一起通过Hash算法(MD5/SHA-1)获得指纹,这样得到得指纹同时具有两个部分的特征。更改其中的一个部分就会造成检验无法通过,但是要重新生成指纹,则必须得到另一部分,而这部分在服务器端,你是拿不到的。因此服务器端只需要一个预设定的密码,就可以处理所有的Cookie签名了,而且使用快速的不可逆算法,根本不会增加负担。



"(貌似伪造就要看入侵者的算法破解能力了?)"

正确,任何的数字内容都是算法产生的,当然必定有对应算法破解。曾经受美国联邦政府信赖的DES56bit算法现在已经有专门的硬件可以在数小时破解(一个体积巨大的PCI卡,而且一台机器可以插数个这样的卡 -o-)专业的机器则可以在数秒钟破解...虽然128bit密匙目前仍然很安全,但是不排除数年后被干掉的可能性。MD5 SHA-1经过验证都存在签名碰撞的问题。任何算法理论上都是不完美的,最终都只有靠物理的定律解决问题,这就涉及到量子物理,扯远了......茶......
Prz - 2004/10/8 14:36:00
以下引用scegg在2004-10-7 15:06:43的发言:
我是负责写KFC2核心WebService的,并不负责站点建设。我的所有函数调用都需要提供账户和密码,至于密码如何存放,那是站点页面处理的问题了。


这就是我要指出的问题啊.....既然每个函数都需要提供帐户和密码,就必然导致每次数据操作都需要产生一次用户数据库的读写......你想一想,每一篇帖子,包含用户名,头像,经验,金钱等,还有帖子内容,再加上可能的上传附件,可能的特殊代码(类似于payview, userview) 这样每显示一片帖子,就会多产生出几个数据库操作......这样我想效率是会出现问题的,因为数据库本身的日志文件会变得极其庞大.....
Prz - 2004/10/8 14:38:00
以下引用wdx04在2004-10-8 13:45:55的发言:
用SSL如何?


这里讨论的不是这个层面的问题.....
zhangmdk - 2004/10/8 16:52:00
以下引用Misha在2004-10-8 14:29:19的发言:


恕删......


不用...全文加密只是提供一种更好的保密性而已,使脚本使用的存取变量名都不可见,加大伪造的难度。事实上根本不需要使用全文加密就可以达到不可更改的效果。(参见以下对SHash的说明)


"如果使用了不可逆算法,不在服务器端保存数据是不现实的"

不正确。我提到了SHash算法,这种算法早就被应用到身份验证协议中了。所谓的SHash就是把一段需要签名的内容和一组密码一起通过Hash算法(MD5/SHA-1)获得指纹,这样得到得指纹同时具有两个部分的特征。更改其中的一个部分就会造成检验无法通过,但是要重新生成指纹,则必须得到另一部分,而这部分在服务器端,你是拿不到的。因此服务器端只需要一个预设定的密码,就可以处理所有的Cookie签名了,而且使用快速的不可逆算法,根本不会增加负担。


这个……好像扯远了一些…… = =
不,是越扯越远了,你提到SHARH算法保留KEY的时候我才反应过来,怎么开始讨论算法安全性了?
明明开始是讨论COOKIE伪造的可能性来着 - -

恩,来看看通常的伪造方式吧。(还是破坏性思维啊  XD)
大概分为两个部分:1、暴力破解  2、算法破解  3、投机取巧
1、强行碰撞HASH算法,无视所有的KEY以及其他内容…………(爆,这基本上是不可能的,玩MU的例外
2、算法破解,已知你的HASH算法以及KEY,这样的话自己生成自己需要的指纹。(-O-,说实话我讨厌这类看得莫名其妙的术语
3、投机取巧……
  啊,这个才是真正用的最多的啦~

看看COOKIE数据与数据库内数据的分类与验证方式:(算法以及安全性放一边先)
COOKIE明/数据库明 -》 直接验证/签名验证
COOKIE密/数据库明 -》 COOKIE逆运算后对照/数据库运算后对照
COOKIE明/数据库密 -》 COOKIE运算后对照/数据库逆运算后对照/COOKIE运算后与数据库二次运算后算法逻辑对照(这人是BT)
COOKIE密/数据库密 -》 直接验证/双方逆运算对照/双方二次运算对照(也是BT)

可以看出现在大部分使用的是第四类的前面那种验证方式。
就是COOKIE加密内容直接和数据库加密内容对照。(KFC现在就是这种形式。)
投机取巧的伪造方式就是直接得到你的密文,然后伪造。
我完全不用管SHASH算法的KEY内容,以及算法的指纹结果是否正确。
因为我得到的就是数据库内存储的数据(例如SQL注入后得到的PASSWORD、USERNAME等,也许经过了MD5加密,但是我完全不用去管)
我需要知道的是你的密文,而不是算法也不是KEY。
因为提交对照的只是内容。
(也就是说,排除了我在两手空空情况下来强制伪造的情况,这种情况也是很少的,除非特殊目的)
例如这次我伪造你的ID,我只需要通过某种方式得到你的SESSION ID,SESSION PASS,USER ID,MD5签名后的PASSWORD。
然后就可以伪造成功。而关于MD5签名的算法,SESSION PASS的随机算法,和我无关……

解决方法其实也有一些:
就如你说的签名内容中加入IP段,这样伪造的话就难了。
还有一个方法就是采用随机KEY的形式,数据库中加入一个KEY表,对应每个人的COOKIE使用的随机KEY。
不过,这样的话就只能使用一个COOKIE了,解决方法是追加一个多个COOKIE列,用COOKIE中的某个数据(例如0-9)来保证COOKIE列的对应,以读取到正确对应的KEY。(不过这样会增大一些数据库就是了 - -)

PS:远了……远了………………茶
scegg - 2004/10/8 17:52:00
以下引用Misha在2004-10-8 14:36:37的发言:


这就是我要指出的问题啊.....既然每个函数都需要提供帐户和密码,就必然导致每次数据操作都需要产生一次用户数据库的读写......你想一想,每一篇帖子,包含用户名,头像,经验,金钱等,还有帖子内容,再加上可能的上传附件,可能的特殊代码(类似于payview, userview) 这样每显示一片帖子,就会多产生出几个数据库操作......这样我想效率是会出现问题的,因为数据库本身的日志文件会变得极其庞大.....


阁下并没有做过WEBSERVICE吧。
首先,WebService并不会对所有访问去操作数据库,而是信赖缓冲;数据库系统也不会对所有请求进行查询,而是信赖缓冲。
另外,程序开发是分层进行的。最核心的是进行数据读写的,这部分是不需要验证的,因为外界访问不到它们,它们是内部函数。而外围的事务逻辑层才是被外界访问的,它们把一个大任务拆成很多小任务,一次验证后分别处理,并返回结果。
还有,由于KFC本身使用了ACCESS数据库,并没有日志问题。

一般的,以目前的计算来看,KFC2的数据访问次数和数据读取流量都小于KFC的平均值,所以阁下不必为此担心。
scegg - 2004/10/8 17:58:00
以下引用zhangmdk在2004-10-8 16:52:30的发言:


不用...全文加密只是提供一种更好的保密性而已,使脚本使用的存取变量名都不可见,加大伪造的难度。事实上根本不需要使用全文加密就可以达到不可更改的效果。(参见以下对SHash的说明)


"如果使用了不可逆算法,不在服务器端保存数据是不现实的"

不正确。我提到了SHash算法,这种算法早就被应用到身份验证协议中了。所谓的SHash就是把一段需要签名的内容和一组密码一起通过Hash算法(MD5/SHA-1)获得指纹,这样得到得指纹同时具有两个部分的特征。更改其中的一个部分就会造成检验无法通过,但是要重新生成指纹,则必须得到另一部分,而这部分在服务器端,你是拿不到的。因此服务器端只需要一个预设定的密码,就可以处理所有的Cookie签名了,而且使用快速的不可逆算法,根本不会增加负担。


这个……好像扯远了一些…… = =
不,是越扯越远了,你提到SHARH算法保留KEY的时候我才反应过来,怎么开始讨论算法安全性了?
明明开始是讨论COOKIE伪造的可能性来着 - -

恩,来看看通常的伪造方式吧。(还是破坏性思维啊  XD)
大概分为两个部分:1、暴力破解  2、算法破解  3、投机取巧
1、强行碰撞HASH算法,无视所有的KEY以及其他内容…………(爆,这基本上是不可能的,玩MU的例外
2、算法破解,已知你的HASH算法以及KEY,这样的话自己生成自己需要的指纹。(-O-,说实话我讨厌这类看得莫名其妙的术语
3、投机取巧……
  啊,这个才是真正用的最多的啦~

看看COOKIE数据与数据库内数据的分类与验证方式:(算法以及安全性放一边先)
COOKIE明/数据库明 -》 直接验证/签名验证
COOKIE密/数据库明 -》 COOKIE逆运算后对照/数据库运算后对照
COOKIE明/数据库密 -》 COOKIE运算后对照/数据库逆运算后对照/COOKIE运算后与数据库二次运算后算法逻辑对照(这人是BT)
COOKIE密/数据库密 -》 直接验证/双方逆运算对照/双方二次运算对照(也是BT)

可以看出现在大部分使用的是第四类的前面那种验证方式。
就是COOKIE加密内容直接和数据库加密内容对照。(KFC现在就是这种形式。)
投机取巧的伪造方式就是直接得到你的密文,然后伪造。
我完全不用管SHASH算法的KEY内容,以及算法的指纹结果是否正确。
因为我得到的就是数据库内存储的数据(例如SQL注入后得到的PASSWORD、USERNAME等,也许经过了MD5加密,但是我完全不用去管)
我需要知道的是你的密文,而不是算法也不是KEY。
因为提交对照的只是内容。
(也就是说,排除了我在两手空空情况下来强制伪造的情况,这种情况也是很少的,除非特殊目的)
例如这次我伪造你的ID,我只需要通过某种方式得到你的SESSION ID,SESSION PASS,USER ID,MD5签名后的PASSWORD。
然后就可以伪造成功。而关于MD5签名的算法,SESSION PASS的随机算法,和我无关……

解决方法其实也有一些:
就如你说的签名内容中加入IP段,这样伪造的话就难了。
还有一个方法就是采用随机KEY的形式,数据库中加入一个KEY表,对应每个人的COOKIE使用的随机KEY。
不过,这样的话就只能使用一个COOKIE了,解决方法是追加一个多个COOKIE列,用COOKIE中的某个数据(例如0-9)来保证COOKIE列的对应,以读取到正确对应的KEY。(不过这样会增大一些数据库就是了 - -)

PS:远了……远了………………茶


解决这个问题的办法:
1 封装数据库部分,使得无法进行SQL注入。例如完全封装到WebService内。
2 封装核心算法,使用编译了的程序,而不是ASP等解释执行的脚本。
3 对于客户段程序,彻底方式COOKIE,而转用其它的保存方式。
Prz - 2004/10/8 23:19:00
以下引用zhangmdk在2004-10-8 16:52:30的发言:

不,是越扯越远了,你提到SHARH算法保留KEY的时候我才反应过来,怎么开始讨论算法安全性了?
明明开始是讨论COOKIE伪造的可能性来着 - -

例如这次我伪造你的ID,我只需要通过某种方式得到你的SESSION ID,SESSION PASS,USER ID,MD5签名后的PASSWORD。
然后就可以伪造成功。而关于MD5签名的算法,SESSION PASS的随机算法,和我无关……


算法安全性..........看来你还是缪能理解SHash (不是SHarh)的功能.......Hash算法并不是保证数据的安全的,算法安全更是无从谈起,SHash用的都是公开算法(MD5,SHA-1),不用保证安全,保证的是数据的完整和数据源的正确。

就拿你这次偷我的Cookie冒充我的Session来说吧,如果服务器端需要的内容为:
SESSION ID
SESSION PASS
USER ID
MD5签名后的PASSWORD
(再增加两项)
提交者的IP
SHash以上内容得到的签名

除非同时使用IP欺骗和得到Cookie,你完全无法伪造我的Session了。
因为你的提交IP和我的不同,因此服务器端重新SHash得到的新指纹就和旧的不同,而你也不可能先在客户端生成一个合法的签名,因为只有服务器知道SHash的密文。

BTW,IP欺骗在没有垮子网的情况下可以很困难的实现,在Internet环境下........除非你先干掉从你的机器到服务器一路上所有的路由......
Prz - 2004/10/8 23:21:00
彻底放弃Cookie.......Cookie现在还存在于世,是有它的目的地........只要好好利用,是不会有问题的.... -_-
scegg - 2004/10/9 7:36:00
以下引用Misha在2004-10-8 23:21:34的发言:
彻底放弃Cookie.......Cookie现在还存在于世,是有它的目的地........只要好好利用,是不会有问题的.... -_-

客户端读取COOKIE比较困难(不是WEB客户),还不如直接去写一个安全的管理文件。
Prz - 2004/10/9 8:08:00
哦,我忘了你是要开发不基于Web的 ^^ 嘿嘿 那就更简单了,干脆把客户端做成服务,一直在线,可以及时返回别人对自己帖子的回复,多好。
scegg - 2004/10/9 8:52:00
服务啊,那样强制性是不是太多了点,而且对98/ME等老用户无法支持了。
Prz - 2004/10/9 9:38:00
M$ 已经放弃95了,再过两三年就是98 ME了....要从长计议.....
现在流行的就是Service Oriented Programming, 好处多多啊
scegg - 2004/10/9 9:45:00
恩,好的。
目前的KFC2的设计是分层进行的。所以说,如果要转换最终实现形式,需要改动的代码量是很少的。不如先做成Windows Application,待到时机成熟再转移到Windows Service或者别的什么技术。
zhangmdk - 2004/10/9 10:37:00
以下引用Misha在2004-10-8 23:19:23的发言:
就拿你这次偷我的Cookie冒充我的Session来说吧,如果服务器端需要的内容为:
SESSION ID
SESSION PASS
USER ID
MD5签名后的PASSWORD
(再增加两项)
提交者的IP
SHash以上内容得到的签名

除非同时使用IP欺骗和得到Cookie,你完全无法伪造我的Session了。
因为你的提交IP和我的不同,因此服务器端重新SHash得到的新指纹就和旧的不同,而你也不可能先在客户端生成一个合法的签名,因为只有服务器知道SHash的密文。

BTW,IP欺骗在没有垮子网的情况下可以很困难的实现,在Internet环境下........除非你先干掉从你的机器到服务器一路上所有的路由......


签名的确是用来保证数据完整性的,但是我们开始的确在讨论算法如何防止破解与数据伪造方面的内容,这就是算法的安全性了……  = =

以你的例子,那么提交的IP数值是从什么地方提交的呢?是从COOKIE里面提交?还是直接从提交客户端读取?
从COOKIE提交的话,那还是一样的伪造……说白了把你机器里的COOKIE完整COPY过来我就可以用。
从提交客户端读取的话,理论上可以通过修改提交数据包来实现伪造。不过具体的伪造方法貌似需要看程序怎么写了……

而且,这个又涉及到IP段变化后全部COOKIE失效的问题了 - -|||
Prz - 2004/10/10 2:04:00
以下引用zhangmdk在2004-10-9 10:37:49的发言:


签名的确是用来保证数据完整性的,但是我们开始的确在讨论算法如何防止破解与数据伪造方面的内容,这就是算法的安全性了……  = =

以你的例子,那么提交的IP数值是从什么地方提交的呢?是从COOKIE里面提交?还是直接从提交客户端读取?
从COOKIE提交的话,那还是一样的伪造……说白了把你机器里的COOKIE完整COPY过来我就可以用。
从提交客户端读取的话,理论上可以通过修改提交数据包来实现伪造。不过具体的伪造方法貌似需要看程序怎么写了……

而且,这个又涉及到IP段变化后全部COOKIE失效的问题了 - -|||




看来你的网络开发经验还是太少......居然会说IP是靠cookie提交的......-_-||||||||||||||||||
IP作为建立网络连接的最基本条件,可以说只要有连接建立,就必然有IP参与,获得客户端的IP简直是容易得不能再容易的事情了。打一个浅显的比方: 现今绝大多是电话都开通了来电显示,你打电话给我,我这里自然而然就显示出了你的电话号码,不用你再报给我一个电话号码.....-_-





"但是我们开始的确在讨论算法如何防止破解与数据伪造方面的内容,这就是算法的安全性了"

.....终于明白你的意思了....不过不要乱用术语, 算法的"安全性"是指算法本身内容的不可知性,对于一个功能就是防止伪造的算法,它的防伪性只能叫做它的"可靠性".





"理论上可以通过修改提交数据包来实现伪造"

这就是我说的IP欺骗嘛。建议你阅读一下相关的文章,你就会明白这有多么困难了。再给你一个简单的说明,我已经说过IP是网络连接的基本条件,有连接数据的传输几乎都是依赖IP进行的。你的主机C要欺骗主机A让它认为你是主机B,需要做的有两件事:
1. 攻击主机B,使其在你欺骗的时间段内无法相应网络请求
2. 伪造主机B的数据包,发送给主机A

要做到1,2都不容易:
首先1要求你能够有进行DoS主机B的条件,或者有掌握主机B的某个和网络相关,可以利用的漏洞;
其次2则要求你首先能够监听网络,获得A-B之间正在进行的连接的数据包。

接下来你需要分析并修改数据包,更改IP报头并猜测其中的递增量,然后发给主机A。但是,因为你是伪造的主机B,是不可能收到主机A的相关回复包的,也就是说到底是对是错,你也不知道,一切全盲。

不过就算这样,在Internet范围内伪造IP进行HTTP通讯也是不可行的,因为:
1. 从你的主机C到主机A有无数个网关和路由,如果正确配置,他们是不会转发一个可疑的IP包的 (比如你的伪造IP包就可疑,因为其IP报文的源地址不对应其子网内任何一台主机)
2. 以上的过程是在A-B连接已经建立的情况下讨论的,而HTTP协议的连接不会持续进行,特别是浏览论坛这种小文件的请求。也就是说,你必须从头到尾伪造主机B与主机A建立连接,而这,基本是不可能的.... (TCP连接的建立需要3次来回的握手,包含有需要互换的信息,而你的伪造主机B是不可能接受到的)

再次,就算你能够成功的实行IP欺骗.......其性质是和单单偷一个cookie完全不同的. -_- 首先你非法监听网络,然后实行了DoS攻击,最后又涉及了信息欺诈,这就是三重罪.......数罪并罚,足够判你20年不准接触任何电脑设备了.....




"这个又涉及到IP段变化后全部COOKIE失效的问题了"

你的IP段一年变化几次?现在网络发展的趋势就是ISP的大规模化和IP的固定化,等IPv6正式应用以后,全球每一颗沙子都会有一个IP(好像有点夸张,不过不是我原创的,据说有理论计算依据),到时候固定IP就是基本条件了。
123
查看完整版本: [严重警告] 从现在开始不要看MDK的帖子,并安装弹出窗口杀除器....MDK居然利用论