string sql="select * from [User] where [UserName]='"+ToSafeString(name)+"'";
//对name进行转义
public static string ToSafeString(string str)
{
return str.Replace("'","''");
}
能行吗?
string sql="select * from [User] where [UserName]=@username";
SqlParameter param = new SqlParameter("@username",username);
问你可不可以啊
不建议这么弄,建议参数化:参数化SQL语句
兄弟,我觉得这样写好一些,而且觉得不会被注入的
string sql="select * from [User] where [UserName]=@UserName";
SqlCommand cmd=new SqlCommand();
SqlParameter[] param = new SqlParameter[]{new SqlParameter("UserName",userName),.....}; //这里面可以写多个new sqlparameter
cmd.Parameters.AddRange(param);
如果逻辑代码跟你写的一样,那肯定可以绕过进行注入了,不过实际使用的时候,不可能使用如此简单的逻辑吧
你绕过去一下,我想看到这个结果,.
和尚你觉得怎样啊?你绕过去给看看啊.
@[秦时明月]: 既然您叫我和尚了,那我告诉你吧,贫僧愚钝,确实不知
@八戒的师傅: 呵呵.开玩笑而已,'唐朝和尚'
可以 ,这就是为什么系统要做前台验证,跟后台验证了。。前台验证是针对君子的,防不了大师。 这个名词叫做代理攻击,,,前台的所有验证等于0
你们怎么都乱讲呢,给一个攻击方案出来才可以啊,不是嘴说.
@[秦时明月]: 假如我会一两句也说不清楚,但是我不会,,我得告诉你这知识,做系统要前台后台都验证,伪造服务器代理。
可以..你用分号在写一句SQL...但是要注意你已经有的单引号需要配对
比如name="';SQL语句 WHERE NAME='123"
我要生气了,你们都越来越粗心了,看看过滤函数再说
@[秦时明月]:确实无法注入了
用参数 就可以了
就可以注入?