ASP 当中数据库问题
用户提出问题:ASP 当中数据库问题,具体如下:
通过互联网整理获得以下解决方法:
=================1楼=====================
userName数据库表的字段
@userName,参数化参数的名称(MSSQLServer),如果是access数据库@userName用问号代替
=================2楼=====================
username代表数据库中表字段名称
@username代表参数化名称|
=================3楼=====================
同意
=================4楼=====================
这里是sqlparameter
简单的给个示例供参考
传统的查询语句的sql可能为
stringsql="select*fromuserswhereuser_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。
现在,我们要改写这样的语句,使用SqlParameter来做
SqlCommandSqlCmd=newSqlCommand(sql,SqlConn);
SqlParameter_userid=newSqlParameter("uid",SqlDbType.Int);
_userid.Value=Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);
这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。
当然,这仅是一个示例而已,在真实的情况下,可能你还要对Request.QueryString["u_id"]进行必要的检测与分析,这样才安全
所以,使用参数化的sql语句,是一种很好的做法
DimsqlAsStringBuilder=NewStringBuilder()
sql.Append("")
sql.Append("SELECT*FROMtest")
sql.Append("WHEREa=@p1")
DimcommandAsSqlCommand=dac.CreateCommand(sql.ToString())'dac为自己写的类
DimparamAsSqlParameter=NewSqlParameter()
param.ParameterName="@p1"
param.SqlDbType=SqlDbType.NVarChar
param.Value=b'b为该函数的参数(ByValbasString)
command.Parameters.Add(param)
DimreaderAsSqlDataReader=command.ExecuteReader()
=================5楼=====================
@最好不要用在sql语言中以免引起误解
如果您还有更好的解决方法,请在最下面评论中留下您的解决方法