我的页面很容易被SQL注入,有什么方法可以防止注入呢?

awe2312 2010-01-27 10:26:47
我的一个内容页http://127.0.0.1/gs/ShowDown.aspx?ID=30
这个地址使用一个简单的SQL注入工具就可以注入。


看看我的ShowDown.aspx.CS文件,非常简单,也没有做相关的安全防护,以为不会,请各位教教我怎么防止SQL注入呢?

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string DownID = this.Request["ID"].ToString();
DataTable TaBle = MyWeb.MyData.GetDBOne("Down", DownID);
this.Label3.Text = TaBle.Rows[0]["Name"].ToString();
this.Label4.Text = TaBle.Rows[0]["Url"].ToString();
this.Label2.Text = TaBle.Rows[0]["Password"].ToString();
}
...全文
403 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用Linq to SQL来操作SQL数据库。
newdigitime 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 nagoo 的回复:]
            DataTable TaBle = MyWeb.MyData.GetDBOne("Down", DownID);
[/Quote]

关键看你的MyWeb.MyData.GetDBOne是怎么写的.
zouzedong 2010-01-27
  • 打赏
  • 举报
回复
存储过程 and 命令化参数。。 多年的老调重谈了
wang_pei_1984 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiyan1221 的回复:]
存储过程、用参数些SQL都可以
up
yangzhiwei1987 2010-01-27
  • 打赏
  • 举报
回复
使用存储过程;还有不要拼接sql语句,使用参数;进行字符串过滤也可以防止sql注入;使用url重写也可以有效的防止
凤凰涅檠 2010-01-27
  • 打赏
  • 举报
回复
http://127.0.0.1/gs/ShowDown.aspx?ID=30

后面的ID=30 or 1=1 ....
cuike519 2010-01-27
  • 打赏
  • 举报
回复
只要做了完备的检查理论上是可以避免被注入的。
josephSC 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ynsky 的回复:]
1.不要用拼接字符串.
2.用占位符
3.用存储过程
4.关键字过滤.

[/Quote].
伴老思源 2010-01-27
  • 打赏
  • 举报
回复
string DownID = this.Request["ID"].ToString();
----------------------------------------------------

换成INT32:
if( Request.QueryString["ID"] == null ) Response.Write(“非法进入!”);

int nDownId = Convert.ToInt32( Request.QueryString["ID"]);
or
验证接收的参数是否为int类型
YnSky 2010-01-27
  • 打赏
  • 举报
回复
1.不要用拼接字符串.
2.用占位符
3.用存储过程
4.关键字过滤.
cxy666 2010-01-27
  • 打赏
  • 举报
回复
字符串过滤 和存储过程
xyj200588 2010-01-27
  • 打赏
  • 举报
回复
用存储过程、页面加上过滤
icheney 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jenny0810 的回复:]
参数化sql语句,不要拼接sql语句
[/Quote]

jack15850798154 2010-01-27
  • 打赏
  • 举报
回复
sqlparamter来给@name赋值。。。。。
yan267 2010-01-27
  • 打赏
  • 举报
回复
有SQL防注入的代码。。。找找。

判断传值的类型。例如判断是否整型。

用参数的方式提交,不用拼SQL的方式作查询。

jack15850798154 2010-01-27
  • 打赏
  • 举报
回复
存储过程或则用SQL语句用’@‘符号
例子:
select * from stu where name=@name;这样写。就可以防止SQL注入;
ckl881003 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuzhengqing1 的回复:]
引用 3 楼 jiyan1221 的回复:
存储过程、用参数些SQL都可以

正解
[/Quote]
up
jenny0810 2010-01-27
  • 打赏
  • 举报
回复
参数化sql语句,不要拼接sql语句
gxq323 2010-01-27
  • 打赏
  • 举报
回复
像这传参,对传的参数做处理就可以了,存储过程肯定可以,限制长度10位基本就差不多了,等不够了再给他解决(别人和我这么说的),替换单引号,类型判断,去除空格
cfvgodot 2010-01-27
  • 打赏
  • 举报
回复
字串过滤 或者是存储过程都可以!
加载更多回复(11)

62,255

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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