首页 新闻 搜索 专区 学院

如何防止对url中的参数进行修改

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-13 13:29

比如Change.aspx?Postid=3如何防止客户对3这个值进行修改。。。。

羽商宫的主页 羽商宫 | 老鸟四级 | 园豆:2490
提问于:2012-07-13 09:55
< >
分享
最佳答案
0

Change.aspx?Postid=3应该是传递的是数字,楼主是想防止别人乱输入导致网页发生错误,

地址栏肯定是能输入的,是防止不了的。

楼主在页面里可以对参数进行一下判断,如果不符合正确参数的话可以进行一下提示

这段代码可以参考下:

string id = Request.QueryString["p"].ToString().Trim();
            if (System.Text.RegularExpressions.Regex.IsMatch(id, @"^[\d]{1,}$") == false)
            {
                string ErrorMessage = "抱歉,您访问的信息参数不正确!";
                Server.Transfer("Error.aspx?info=" + ErrorMessage + "");
                Response.End();
            }

收获园豆:10
墨猦 | 小虾三级 |园豆:668 | 2012-07-13 11:52
其他回答(5)
1

防止不了。当然也有办法,但是对你的应用架构和执行逻辑改动会很大。

一般在需要较高安全级别的网站我们才使用防篡改技术。

 

你的问题时你先的让自己明白,

1,你为什么需要防止客户修改?

2,你真的需要通过防止客户修改的方式来满足你的需求吗?

Launcher | 园豆:45045 (高人七级) | 2012-07-13 10:00

这个。。。。我就是想学习学习。。。。。说不定以后要用上呢。。。。我们学校的学分制管理系统里就是使用了url传参,我上次试了试,结果不能改。。。直接就回到登陆页了。。。。

支持(0) 反对(0) 羽商宫 | 园豆:2490 (老鸟四级) | 2012-07-13 10:11
0

这个,这个,好像没办法啊,因为是客户端发起请求,理论上他可以传任何他想传的参数给你。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-07-13 10:08

这个。。。。我就是想学习学习。。。。。说不定以后要用上呢。。。。我们学校的学分制管理系统里就是使用了url传参,我上次试了试,结果不能改。。。直接就回到登陆页了。。。。

支持(0) 反对(0) 羽商宫 | 园豆:2490 (老鸟四级) | 2012-07-13 10:11
0

永远不要相信客户端传进来的数据,你在change.aspx的后台代码里应当对postid参数进行检查(比如看当前用户是否有权限去查看这个记录),而不是防止修改(事实上你根本防止不了)。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-13 10:10

好吧。。。就是对数据进行检查是吗

支持(0) 反对(0) 羽商宫 | 园豆:2490 (老鸟四级) | 2012-07-13 10:12

@王凌志: 他们是不是把地址栏给锁定了。或才后台也可以判断,如果传来的参数不符合要求,则执行跳转。

支持(0) 反对(0) jerry-Tom | 园豆:4077 (老鸟四级) | 2012-07-13 10:15
0

我觉得楼主应该考虑对这个传入的参数进行严格的验证。

chenping2008 | 园豆:9836 (大侠五级) | 2012-07-13 10:51

要不这样吧,用window.showdialog这个打开一个页面,这样的话,url中的地址是无法进行修改的,或者楼主放弃get方式的提交,而是改用post的方式进行提交。

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-07-13 10:52
0

页面初始化的代码可以全写在

if(!this.IsPostBack)
{

}

人无情剑无锋 | 园豆:202 (菜鸟二级) | 2012-07-20 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册