首页 新闻 会员 周边 捐助

如何有效防止外部提交?

0
悬赏园豆:50 [已关闭问题]

有一个表单直接post到一个.aspx文件

如何防止用户直接在本地写一个一样的表单进行Post呢?

referer可以伪造,有啥其它办法?

yibin的主页 yibin | 初学一级 | 园豆:17
提问于:2008-11-03 21:50
< >
分享
其他回答(8)
0

用 session 作个校验(授权)如何?

陛下 | 园豆:3938 (老鸟四级) | 2008-11-03 22:06
0

session不好。

KangKang | 园豆:10 (初学一级) | 2008-11-04 09:35
0

1.URLRewriter

2.用Session,不过要注意最好加密

RicoRui | 园豆:3663 (老鸟四级) | 2008-11-04 09:38
0

不用session也行,用cookie.

获取页面时加一个按一定算法生成的cookie,Post时检查是否有合法的cookie,就像软件检查注册码一样.

deerchao | 园豆:8367 (大侠五级) | 2008-11-04 10:30
0

cookie 也不好弄吧.当然你打开页面的时候就有了. 还是可以伪造啊!!

我感觉目前也没什么好的办法!!

索马 | 园豆:100 (初学一级) | 2008-11-04 11:38
0

实现不了,http的协议注定了能伪造。不论如何,我抓包都能看到提交出去的内容,伪造成一摸一样就ok了。

不过换种方法考虑,加个验证串,只要程序抓不到(非人为的去查看),也能防范下。可以尝试每次提交都用图片验证码。

YuYii | 园豆:210 (菜鸟二级) | 2008-11-04 18:16
0

很难彻底防止伪造,除非在浏览器侧启用用户证书做非对称加密。如果不进行加密,http 包是明码传输的,用楼上的session,cockie等办法都无法彻底防止伪造。楼主说的隐藏action,就是在html中隐藏了,用抓包工具还是可以看到Post的实际地址。

退而求其次,目前做的比较多的防止伪造的办法有如下几种:

第一: 让用户输入验证码,验证码通过图片展示,这种方法一般程序很难破解。

第二: 在url 或者 cockie里面加一个时间戳,这个时间戳的加密算法只有服务器知道,这种方法可以防止浏览器侧连续Post数据,也可以设置过期时间,超过一定时间后再Post就无效了。

eaglet | 园豆:17139 (专家六级) | 2008-11-05 06:46
0

post里多一个参数做验证,验证不通过,即使收到post也不处理

chy710 | 园豆:167 (初学一级) | 2008-11-05 12:22
0

验证码吧

明海哥哥 | 园豆:185 (初学一级) | 2008-11-06 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册