这是在我的网站的“讨论”模块中防止输入错误词汇的最佳方法

时间:2013-03-13 04:49:54

标签: c# asp.net sql-server web

在我的网站上,一些黑客正在输入坏话。哪种方法可以防止这种情况发生?

我使用ASP.NET,C#和SQL Server作为资源。

  1. 检查表格后端的坏词?
  2. 检查javascript中的错误字词?
  3. 在插入之前检查存储过程中的坏词?
  4. 我认为第一种方法是最好的。

    请告知此检查的优化代码

    现在我正在使用这种方法

        var filterWords = ["fool", "dumb", "couch potato"];
        // "i" is to ignore case and "g" for global
        var rgx = new RegExp(filterWords.join(""), "gi");
    
        function wordFilter(str) {          
                return str.replace(rgx, "****");           
        }
    
        // call the function
        document.write("Original String - ");
        document.writeln("You fool. Why are you so dumb  <br/>");   
        document.write("Replaced String - ");
        document.writeln(wordFilter("You fool. Why are you so dumb"));   
    

3 个答案:

答案 0 :(得分:2)

您应该检查ASP.NET代码,在服务器端。 JavaScript或任何其他客户端检查可以轻松解决。你发布的代码工作得很好,除了它不是特别强大(各种简单的拼写错误会绕过它)。

答案 1 :(得分:1)

确保检查排列,例如

  

安全 - &gt; $ 3(UR3

我会用

之类的东西替换这个词
  

[REMOVED]或[CENSORED]

对于客户/其他人来说,像s ***这样的词语仍然可以被视为冒犯。

编辑:在这里看到HevyLight关于javascript使用的想法......你可以尝试在C#层中使用字符串过滤器(假设已经完成了繁重的工作和数据库调用)。在写入数据库之前,通过过滤器传递所有字符串帖子(以及其他人可以查看)。

答案 2 :(得分:0)

现实是,你不能阻止100%的坏词。 我将在服务器端进行两步验证(JS可以被禁用,SQL不适合处理它)

  1. 创建最常用的最常见坏词列表 - 这可能会占到所有输入的80%。

  2. 为嫌疑人创建一个模式列表,以指示您手动验证这些模式。

    这可能是

    等模式
    • a)Word包含两个或多个**字符
    • b)Word包含字母和以下字符之一0,3,$和其他
  3. 您必须及时更新两个列表。同样,这不会解决100%的情况,但如果正确实施,它可能会捕获并修复95%。