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();
}
防止不了。当然也有办法,但是对你的应用架构和执行逻辑改动会很大。
一般在需要较高安全级别的网站我们才使用防篡改技术。
你的问题时你先的让自己明白,
1,你为什么需要防止客户修改?
2,你真的需要通过防止客户修改的方式来满足你的需求吗?
这个。。。。我就是想学习学习。。。。。说不定以后要用上呢。。。。我们学校的学分制管理系统里就是使用了url传参,我上次试了试,结果不能改。。。直接就回到登陆页了。。。。
这个,这个,好像没办法啊,因为是客户端发起请求,理论上他可以传任何他想传的参数给你。
这个。。。。我就是想学习学习。。。。。说不定以后要用上呢。。。。我们学校的学分制管理系统里就是使用了url传参,我上次试了试,结果不能改。。。直接就回到登陆页了。。。。
永远不要相信客户端传进来的数据,你在change.aspx的后台代码里应当对postid参数进行检查(比如看当前用户是否有权限去查看这个记录),而不是防止修改(事实上你根本防止不了)。
好吧。。。就是对数据进行检查是吗
@王凌志: 他们是不是把地址栏给锁定了。或才后台也可以判断,如果传来的参数不符合要求,则执行跳转。
我觉得楼主应该考虑对这个传入的参数进行严格的验证。
要不这样吧,用window.showdialog这个打开一个页面,这样的话,url中的地址是无法进行修改的,或者楼主放弃get方式的提交,而是改用post的方式进行提交。
页面初始化的代码可以全写在
if(!this.IsPostBack)
{
}
中