C#代码string strsql = "select * from news where id=" + Request.QueryString["id"].ToString();

System.NullReferenceException:未将对象引用设置到对象的实例。... System.NullReferenceException: 未将对象引用设置到对象的实例。 展开
 我来答
河清鱼戏水A
推荐于2018-03-29 · TA获得超过1963个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:658万
展开全部

从安全角度考虑,querystring当中的参数是不能直接用到查询语句当中去的!原因如下:

  1. querystring当中的参数不一定存在或赋值,querystring获取的值在网址当中能看到,用户可以手动修改,如果用户不小心删掉某个数字或系统异常导致链接跳转出错,后台处理程序就会报错,因此,在使用之前要进行判断,if(Request.QueryString["id"]!=null),如果成立,通过string tempid=Request.QueryString["id"].ToString();

  2. 防止越权访问:如果直接在sql当中使用querystring当中的参数,在用户端人为修改参数值的时候,可以躲避系统的安全检查或条件选择,例如querystring里面id= 5 or 1=1,因为是直接使用参数的tostring方法,所以,sql语句变为:select * from news where id=1 or 1=1,这样就可以遍历所有用户信息。如果有些用户是不能公开访问的话,这样信息就泄漏了!

综上,一般操作步骤如下:

  1. 判断参数是否存在 if(Request.QueryString["id"]!=null) string tempid=Request.QueryString["id"].ToString();

  2. 判断参数是否符合条件 去除异常符号:可以通过正则匹配或string.replace()函数过滤空格、单引号等

  3. 将处理后的参数加入sql命令!

ricetendto2
2013-06-05 · TA获得超过583个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:348万
展开全部
楼主,你的Request.QueryString["id"]胃null,也就是说你没有取到你要的id,你直接引用一个null,在null的基础上执行操作,所以报空。
改正方法有:一、调试到获取到id;二、给Request.QueryString["id"]做一个空的判断
Request.QueryString["id"] == null ? null : Request.QueryString["id"].ToString()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
devilszhou
2013-06-05 · 超过15用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:42.1万
展开全部
如果是这一行报错的话 那么肯定是Request.QueryString["id"]这里报错 请先确认你的url传递时是否带有该参数 同时QueryString是只在url中寻找 还有 楼主这种拼接查询sql语句的方法很不安全
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
actonst
2013-06-05 · TA获得超过1.8万个赞
知道大有可为答主
回答量:8184
采纳率:80%
帮助的人:5240万
展开全部
从这句话来看,只能是Request.QueryString["id"]不存在,所以你调用它的ToString()方法会出现这个异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轻舞霓裳a
2013-06-05 · TA获得超过247个赞
知道答主
回答量:374
采纳率:0%
帮助的人:169万
展开全部

首先看看 

Request.QueryString["id"].ToString();

是不是空的。如果不是空的,建议

            string strsql = string.Format("select * from news where id={0}", Request.QueryString["id"].ToString()};

写法。

追问

追答
首先你不存在你并没有解决啊。用string.IsNullOrEmpty(Request.QueryString["id"].ToString())判读一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式