如何限制某个页面只能从本站一个页面访问?

linhl 2009-09-18 10:46:51
网站中一个页面a会向另一个页面b.apsx post数据,如何防止别人向b.aspx post伪造的数据?
原打算用Request.UrlReferrer.AbsoluteUri来判断请求来源,但Request.UrlReferrer是可以伪造的,有什么可靠的方法可以达到目的?
...全文
467 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhl 2009-09-21
  • 打赏
  • 举报
回复
看来是没什么好的解决办法了,结帖吧
linhl 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xzq686 的回复:]
C# code
b.aspx页面的Page_Loadstring referUrl= Request.UrlReferrer.AbsoluteUri;if(referUrl.indexOf("你网站域名/目录/a.aspx")==-1)
{//非本站页面..可以返回..或关闭}
[/Quote]

Request.UrlReferrer是可以伪造的
柳晛 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 linhl 的回复:]
swf文件很容易反编译的
[/Quote]

flv
xzq686 2009-09-18
  • 打赏
  • 举报
回复
a页面里是一个flash小游戏,在flash中向b.aspx post游戏成绩,想实现的是防止别人向b post假成绩,用验证码的方法是不行的,因为不能要求用户每玩一次都要输入验证码才记录成绩


b.aspx页面的Page_Load
string referUrl = Request.UrlReferrer.AbsoluteUri;
if(referUrl.indexOf("你网站域名/目录/a.aspx")==-1)
{
//非本站页面..可以返回..或关闭
}
柳晛 2009-09-18
  • 打赏
  • 举报
回复
验证码。
linhl 2009-09-18
  • 打赏
  • 举报
回复
swf文件很容易反编译的
游北亮 2009-09-18
  • 打赏
  • 举报
回复
没做过Flash,不知道反汇编flash的难度
应该Flash也类似ActiveX吧,直接在那里面加密就好了
把用户名和成绩和时间组合后加密,提交到服务器上
服务器进行解密,对比时间,如果超过一定期限就不让保存
linhl 2009-09-18
  • 打赏
  • 举报
回复
只是一个小游戏,让用户安装ActiveX也不好吧
游北亮 2009-09-18
  • 打赏
  • 举报
回复
有一个方案,就是客户端放一ActiveX,里面对提交的数据加密
把加密内容提交,前提是加密算法不公开

因为不用ActiveX通过客户端代码,很容易知道你要加密的内容是哪些,以及加密后的结果很容易推算。

所以你的目的只能是加密提交了。
游北亮 2009-09-18
  • 打赏
  • 举报
回复
楼上的,我已经在一楼说了Session了,不过用户完全可以先访问A页面,生成Session后,
提交时再自己伪造数据,提交给B页面
所以Session是行不通的
注册失败 2009-09-18
  • 打赏
  • 举报
回复
都是你自己的页面
办法还不是随便你想哦

思路+伪代码:
a页面加载的时候:
session["isA"] = true;
b页面判断
if( bool.Parse(Session["IsA"]))
{
xxxxx
}

反正就是用服务器的东西,别用客户端的东西,这样别人就不能伪造了
linhl 2009-09-18
  • 打赏
  • 举报
回复
a页面里是一个flash小游戏,在flash中向b.aspx post游戏成绩,想实现的是防止别人向b post假成绩,用验证码的方法是不行的,因为不能要求用户每玩一次都要输入验证码才记录成绩
mngzilin 2009-09-18
  • 打赏
  • 举报
回复
很难彻底防止伪造,除非在浏览器侧启用用户证书做非对称加密。如果不进行加密,http 包是明码传输的,用session,cockie等办法都无法彻底防止伪造。楼主说的隐藏action,就是在html中隐藏了,用抓包工具还是可以看到Post的实际地址。

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

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

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

游北亮 2009-09-18
  • 打赏
  • 举报
回复
没有什么好办法,只要用户提交的数据正确,你管它从哪里提交的呢?
游北亮 2009-09-18
  • 打赏
  • 举报
回复
在a页面创建一个Session,在b页面读取后清除
jxwangjm 2009-09-18
  • 打赏
  • 举报
回复
在a.aspx中直接把数据存在session中,而b.aspx中从session中读取数据
是否可行?
王向飞 2009-09-18
  • 打赏
  • 举报
回复
看看 不说话
游北亮 2009-09-18
  • 打赏
  • 举报
回复
REFERER可以伪造,随便一个攻击工具都可以修改
或者你用用HttpWebRequest,这个类就有个属性Referer可以直接设定

而Server_Name是取得当前引用页的,这个不能伪造,也没必要伪造,你本来就要提交到这个服务器上,还伪造个啥?

楼上说的更可笑,用MD5加密后,服务器拿来干吗用?MD5又不能解密
就算可以解密,客户端知道加密算法,知道要提交些什么数据,太容易了

我觉得很奇怪,很多人都是不懂装懂。

估计除了ActiveX加密,并保密加密算法,提交
应该没有好办法了吧
robin521 2009-09-18
  • 打赏
  • 举报
回复
每次数据用MD5加密传送,
jerry_zuo 2009-09-18
  • 打赏
  • 举报
回复
可以 在 两个页面分别用算法 进行 字符串 验证 一般 很难 破解~~
加载更多回复(3)
简介: 1、多级目录,每个目录下面可以有更深一级目录,并列出属于该目录的网站 管理:选择分类管理,添加需要的分类,或者选择下一级目录,同时可以选择删除(删)修改(修)制作(制)某一个目录 2、静态页面,所有目录页面均使用程序生成了html页,不用读取数据库,大大节省了服务器资源 管理:选择制作下属页面,系统会列出搜索的类别,请选择需要生成的类别 3、目录模版,在数据库中存放了大量的页面模版,每一个目录都可以订制自己的网面 管理:选择模板管理,系统会列出目前已经存在的模板,你可以修改,添加,删除,添加时请按照示例进行制作,建议先将数据库备份再修改 4、即时登陆网站,站长可以随时登陆自己的网站,但是登陆以后只能在他选定的目录所显示的页面中的“更多”网站页面中显示出来,只有在管理员审查并生成页面以后才能直接在目录页面看到 5、模糊查找, 6、布尔查找,支持and(*) or(|) not(-)等布尔表达式 例如:烟台*一百-新闻 或者:烟台 and 一百 not 新闻 如果只需要and连接,可以只输入 烟台 一百,这与 烟台*一百、烟台 and 一百 效果等同 搜索结果将会把相关关键词以特殊的颜色显示出来 7、常用关键词页面自动生成,用户输入查找的关键词都保存在数据库中,如果有相同的关键词则这些关键词数量累加,管理员管理的时候可以生成排名在头几位的关键词页面,也就是提前替用户把这些关键词提前搜索出来了,并且生成了静态的html页面,用户在搜索这些关键词时,就可以直接显示这些已经生成的页面,避免了大量的查询数据库,节省了服务器资源 管理:选择关键词管理,系统会列出数据库中已经存在的可以生成的关键词,以及网友在使用这个搜索引擎时用的关键字(只选取排名头100个),管理员可以随意生成需要的关键词页面 8、网站顺序,在某个目录下的网站数目很多的时候,排在上面的网站被访问的几率比排在下面的网站几率要大得多,因此我又增加排名功能,管理员可以设定某个网站在该目录下的排名 9、单目录搜索,当用户在某个目录浏览的时候,可以选择在该目录下搜索和搜索全部目录,选择在该目录下搜索可以只搜索属于该目录以及该目录的子目录下的网站 10、静态页面在线生成,在管理界面可以在线生成所有目录下的页面以及关键词页面 11、二次搜索功能,当用户在搜索某个关键词以后,系统列出了〉20个结果以后,就会出现二次搜索界面,用户可以选择在这些结果中再次搜索,比如要求结果必须不包含某个关键词或者必须再包含某个关键词 12、模版的在线修改,不同的页面模版有不同的规则 14、所有目录在线动态修改,自动更新以前的页面 15、动态生成网站首页(需要模版支持) 16、分类参照:指一个分类类目名分在一个上级类目下,而在另一个类目下作参照。以@作后缀的类目名。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧