游戏服务器端防止Sql注入

所谓的sql注入,就是通过输入请求,把sql命令插入到sql语句中,已达到欺骗服务器的目的。
假设服务器端要获取玩家的数据,可能使用如下的sql语句

string sql = "select *from player where id = " + id ;

当然,在正常情况下该语句能够完成读取数据的工作,但如果一名玩家恶意注册了类似的

"xiaoming;delete *form player"

这样的名称,这条sql语句将会变成下面两条语句。

select *from player where id = xiaoming ;delete *form player ;

执行了这样的语句之后,player表中的数据将会全部清空,后果不堪设想。如果把含有逗号、分号等特殊字符判定为不安全字符,在拼装sql语句前进行安全检测,就可以有效的防止sql注入
代码如下:
//判定安全字符

public bool IsSafeStr (string str)
{
return !Regex.IsMatch (str ,@"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
} 

猜你喜欢

转载自blog.csdn.net/weixin_41590778/article/details/129475896