ASP 当中数据库问题

2016 年 6 月 27 日2810

用户提出问题:ASP 当中数据库问题,具体如下:

通过互联网整理获得以下解决方法:

=================1楼=====================

userName数据库表的字段

@userName,参数化参数的名称(MSSQLServer),如果是access数据库@userName用问号代替

=================2楼=====================

username代表数据库中表字段名称

@username代表参数化名称|

=================3楼=====================

引用1楼showbo的回复:

userName数据库表的字段

@userName,参数化参数的名称(MSSQLServer),如果是access数据库@userName用问号代替

同意

=================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语言中以免引起误解

如果您还有更好的解决方法,请在最下面评论中留下您的解决方法

0 0