防止程序SQL语句错误以及SQL注入
来源:互联网 发布:软件测试教程 编辑:程序博客网 时间:2024/06/08 05:33
为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理。有2种办法:
1、使用参数,比如SELECT * FROM yourTable WHERE name = @name;
在C#中使用SqlParameter parameter = new SqlParameter("@name", objValue);来添加参数,懒得写SqlDbType这东西了,因为不写也完全可以,只需要参数名和值。
在JAVA中就是用预处理PreparedStatement来添加参数。
2、如果不用参数,而用字符串拼接的话,单引号必须经过判断并替换,在数据库中,用2个单引号代表1个实际的单引号。所以,如果是拼接方式,需要用String.Replace("'", "''")来替换一下,将1个单引号替换为2个就没有问题了。
如string sql = "select * from table1 where name = '" + name.Replace("'","''") + "'"; // 替换一个单引号为两个单引号
再说一下C#中的模糊查询,为了避免单引号,我们使用参数的方式,下面的语句是不对的:
SELECT * FROM yourTable WHERE name LIKE '%@name%';在这个句子中,'%@name%'被整体当作一个字符串来处理,你无论如何查询不到结果。修改一下,SELECT * FROM yourTable WHERE name LIKE @name;然后添加参数的时候这么添加:
new SqlParameter("@name", "%" + categoryName + "%"); 这下就没问题了,正常查询,你输单引号照样查。
批量删除数据库中被注入的代码:
六、结论
为了防止SQL注入,同时避免用户输入特殊字符时查询结果不准确的问题,应该做两件事:
(1)使用参数化查询。
(2)在使用用户输入的字符串数据设置查询参数值之前,首先调用下面的共通处理函数:
private static string ConvertSql(string sql)
{
//sql = sql.Replace("", ""); // ADO.NET已经做了,不要自己做
sql = sql.Replace("[", "[[]"); // 这句话一定要在下面两个语句之前,否则作为转义符的方括号会被当作数据被再次处理
sql = sql.Replace("_", "[_]");
sql = sql.Replace("%", "[%]");
return sql;
}
- 防止程序SQL语句错误以及SQL注入
- jsp防止sql语句注入
- php 防止sql语句注入
- Sql语句防止注入方法
- hibernate防止sql语句注入
- sql注入,以及如何防止
- 利用sql预处理语句 防止sql注入
- .net程序防止sql注入
- asp防止sql 语句注入的代码
- 如何防止Sql语句的注入?
- php 防止sql 注入的语句
- 防止sql语句编写注入攻击
- pdo通过预处理语句防止sql注入
- PHP防止sql语句注入终极解决方案
- ASP程序安全-如何防止sql注入
- asp.net程序防止sql注入
- 如何在程序中防止SQL注入
- asp.net程序防止sql注入
- OpenMP——学习周老师文章(3)
- squid配置详解+认证教程
- JavaScript判断浏览器类型及版本
- Linux和Windows换行符的区别
- MVC设计模式的实现
- 防止程序SQL语句错误以及SQL注入
- linphone Ubuntu下运行
- 获得本主机的IP地址
- 1小时完成别人5小时才能完成的事--信息爆炸时代提高效能
- Spring Schemas and Namespaces(转)
- onst, static ,auto,define, resgister ,extern
- 递归函数的概念用法与实例
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现
- 自己写的一个LINUX 下目录文件遍历程序