c#开发的web如何防止攻击 1:一般是如何进行sql注入攻击的?这是通过软件还是通过什么?2:正则表达式登陆问题,原来做asp的时候不知道听谁说可以用正则表达式直接进入?密码什么的都不要?是不是真有这回事?如果有,我该怎么攻击? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 网站攻击的防范好像很困难,sql攻击好像是利用后台代码直接使用的sql语句。正则表达式没听说过。 使用sql参数可以避免sql注入攻击.可以看一下"构建安全的 ASP.NET 应用程序",希望对你有帮助http://www.microsoft.com/china/MSDN/library/archives/library/securityguide/howtodo.asp 这不属于C#内容了,正则表达式只可以防错防弊但要防黑防注入,所包含的东西就多了。我最近也在学安全性的东东。http://test.szsbi.cn 这里面用的是就是SQL SERVER 2000正在等待外部非法注入. 你可以看一下http://www.blueidea.com/tech/program/2004/1810.asp学会怎么注入才能真正了解到防范的原理 (论坛答疑点滴)有关sql注入 http://community.csdn.net/Expert/topic/3803/3803170.xml?temp=.6236078大家存在5点误区:1、sql注入比较难防,需要替换select,delete等一打字符其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。2、忽略DropDownList传来的东西其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。3、access比sqlserver不安全安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。4、网站没有显示出错信息就说明网站是安全的当有记录的时候显示记录,没有记录的时候显示找不到任何记录,通过这两种状态就可以猜解字段名了,所以网页不出错不能说明是安全的5、忽略post提交的信息很多人对url上传递的东西过滤严格,对于post的东西不理不睬是不对的,post的东西更加容易被注入,因为一般字段比较多在asp.net中强烈建议通过参数来实现sql而不是sql拼接,因为就算你每一个都过滤百密难有疏比如:SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); SqlCommand comm=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn); SqlParameter parm1=new SqlParameter("@vName",SqlDbType.NVarChar,50); parm1.Value=((TextBox)e.Item.FindControl("name")).Text; SqlParameter parm2=new SqlParameter("@iAge",SqlDbType.Int); parm2.Value=((TextBox)e.Item.FindControl("age")).Text; SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int); parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex]; comm.Parameters.Add(parm1); comm.Parameters.Add(parm2); comm.Parameters.Add(parm3); conn.Open(); comm.ExecuteNonQuery(); conn.Close();这样的代码看起来舒服而且又安全,何乐不为? 是的,,要对单引号进行处理。如:select * from userName='用户名' and userPwd='用户密码'但如果我的密码是:select * from userName='用户名' and userPwd='1'or'1'='1' 那么我的密码是:1'or'1'='1 条件就可以成立了,, IIS 发布到本地服务器,其它某一台机器访问出错! 急!!!!c# 使用sqladaper更新dataset到数据库表 源代码管理 你都写过什么木马或者病毒? 【回答快,结贴更快】正则一点不会,给会的人散分,超简单 大虾们,高手们:C/S与B/S混合结构,怎么样开发才能易于实现,便于维护,扩展能力强。。。 年月的正则表达式问题! 请问一下,这里有没有专门讨论C# FOR WINCE 的区? WPF依赖属性问题 如何用ADO调用SQL数据库; C#連接Access數據庫 这个方法 怎么写?数据操作的
正则表达式没听说过。
可以看一下"构建安全的 ASP.NET 应用程序",希望对你有帮助
http://www.microsoft.com/china/MSDN/library/archives/library/securityguide/howtodo.asp
包含的东西就多了。我最近也在学安全性的东东。http://test.szsbi.cn 这里面用的是就是SQL SERVER 2000
正在等待外部非法注入.
http://www.blueidea.com/tech/program/2004/1810.asp
学会怎么注入才能真正了解到防范的原理
http://community.csdn.net/Expert/topic/3803/3803170.xml?temp=.6236078
大家存在5点误区:
1、sql注入比较难防,需要替换select,delete等一打字符
其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。
2、忽略DropDownList传来的东西
其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。
3、access比sqlserver不安全
安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。
4、网站没有显示出错信息就说明网站是安全的
当有记录的时候显示记录,没有记录的时候显示找不到任何记录,通过这两种状态就可以猜解字段名了,所以网页不出错不能说明是安全的
5、忽略post提交的信息
很多人对url上传递的东西过滤严格,对于post的东西不理不睬是不对的,post的东西更加容易被注入,因为一般字段比较多在asp.net中强烈建议通过参数来实现sql而不是sql拼接,因为就算你每一个都过滤百密难有疏
比如:SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand comm=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn);
SqlParameter parm1=new SqlParameter("@vName",SqlDbType.NVarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("name")).Text;
SqlParameter parm2=new SqlParameter("@iAge",SqlDbType.Int);
parm2.Value=((TextBox)e.Item.FindControl("age")).Text;
SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int);
parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
这样的代码看起来舒服而且又安全,何乐不为?
如:
select * from userName='用户名' and userPwd='用户密码'
但如果我的密码是:
select * from userName='用户名' and userPwd='1'or'1'='1' 那么我的密码是:1'or'1'='1 条件就可以成立了,,