易截截图软件、单文件、免安装、纯绿色、仅160KB

避免SQL注入和特殊字符的一种方法

 递归小谈自备C#辅助函数
十08
避免SQL注入和特殊字符的一种方法
C#Add comments
避免SQL注入和特殊字符的办法有很多,不同数据库也有不同数据库的解决方案,ADO.NET中使用DbCommand.Parameters解决这个问题,为了了解他的原理,我查了一下.NET中SQLCommand的源代码和MySQL.NET中MySQLCommand的源代码。
.NET源代码超级难跟踪,貌似是用了SQL Server独有的特性,把参数的名称、类型、把值的二进制都传给了SQL Server API,具体没有跟到。
MySQL实现就很简单了,他会把字符串类型的参数value使用一个过滤数组来过滤,在过滤字符前面加上“\”,我认为这是一种通用的做法,虽然效率上不如SQLCommand好,但是和容易移植更容易看懂! 
使用PHP+MySQL做网站的同学也可以利用着类似的思想生成安全的SQL连接串,我看了PHPWind数据库处理函数,貌似并没有对所有的过滤字符进行处理,这就存在着一些安全隐患。 
源代码
private static string stringOfBackslashChars = "\u005c\u00a5\u0160\u20a9\u2216\ufe68\uff3c";
private static string stringOfQuoteChars =
"\u0027\u00b4\u02b9\u02ba\u02bb\u02bc\u02c8\u02ca\u02cb\u02d9\u0300\u0301\u2018\u2019\u201a\u2032\u2035\u275b\u275c\uff07";
 
/// <summary>
/// Escapes the string.
/// </summary>
/// <param name="value" />The string to escape</param>
/// <returns>The string with all quotes escaped.</returns>
public static string EscapeString(string value)
{
StringBuilder sb = new StringBuilder();
foreach (char c in value)
{
if (stringOfQuoteChars.IndexOf(c) >= 0 ||
stringOfBackslashChars.IndexOf(c) >= 0)
sb.Append("\\");
sb.Append(c);
}
return sb.ToString();
}
如何在VS2008中开启.NET源代码调试
工具->选项->
调试->启用源服务器支持
符号->添加PDB位置http://referencesource.microsoft.com/symbols
            本地缓存目录


相关文档:

SQL*Plus 中的spool使用方法

 在使用SQL*Plus生成报告文件的时候,往往会因为其默认的设置导致输出的结果非常的没有可读性,下面介绍一个日常中会被用到的一个脚本,其中包含一些格式化
输出的set命令
,为了方便理解,我会在每一条set命令之后紧跟着一个简单的解释,请慢慢体会。
sqlplus -s user_name/user_password << EOF >/dev/n ......

PL/SQL Developer使用技巧

 1、PL/SQL
Developer记住登陆密码
   在使用PL/SQL
Developer时,为了工作方便希望PL/SQL
Developer记住登录Oracle的用户名和密码;
设置方法:PL/SQL
Developer 7.1.2 
->tools->Preferences->Oracle->Logon History , “Store
history”是默认勾选的,勾上&ldqu ......

SQL语句效率问题的几点总结


1. SQL优化的原则是:
  将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。 
  调整不良SQL通常可以从以下几点切入: 
  检查不良的SQL,考虑其写法是否还有可优化内容 
  检查子查询  考虑SQL子查询是否可以用简单连接的方式进行重新书写  ......

Oracle SQL的硬解析和软解析


 
说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
    1、语法检查(syntax check)
    检查此sql的拼写是否语 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号