求过滤掉输入的特殊、危险的字符的方法。如果可以写一点看看

解决方案 »

  1.   

    可以替换之类的方法
    http://www.cnblogs.com/end/archive/2010/07/15/1778041.html
      

  2.   

    我只是给你一个“点”你自己了解、扪心自问一下所谓“过滤”的最普遍概念:在用户录入过程中,往往需要输入单引号。例如书名、人名、地点、自己写的文章,等等,怎么就不能输入单引号呢?此时如果有些人告诉说“需要过滤掉单引号”这就是扯淡的逻辑,是一种假借“SQL注入”这个概念来恐吓你的方法。因为如果你正常地写sql,那么用户录入的单引号文本(作为文本查询条件或者插入、修改的数据)应该正常使用,根本不会出现bug。既然不应该出现bug,那么也谈不上什么“SQL注入”问题。所谓的注入问题完全是在你根本不会写正确的sql语句的情况下才出现的,那是用你的sql语法简单错误来偷换成他们的概念。
      

  3.   

    软件设计中,需要配置一些用户录入模式。例如用户名中假设不允许录入分号(;),那么你就可以用一个测试用例来找到这个bug。类似的输入模式也是一样,你可以根据业务需求来定义检验用户录入内容的正则表达式,而如果没有这类业务规则,你就应该用一个通用的编程方式来保证测试其用户录入内容一定能够将单引号、分号、select之类的字符去正常输入数据库。
      

  4.   

    用sqlparameter参数化
      

  5.   

    对, 参数化就好了, 不要拼SQL, 将用户输入的东西拼进SQL就会有注入危险
      

  6.   

    很简单的处理。如果是参数是整型或数值型或日期型等,就用int.TryParse或decimal.TryParse去探一下输入的值是否正确如果是字符串,就直接将输入的单个单引号替换为两个单引号
    什么替换关键字符,尤其是那些替换Select/Insert/Update等单词为其他字符的,纯属瞎扯以讹传讹了。
      

  7.   

    sqlparameter参数化