3

私の Web サイトで、何人かのハッカーが悪い言葉を入力しています。これを防ぐ最善の方法はどれですか?

ASP.NET、C#、および SQL Server をリソースとして使用しています。

  1. フォームのバックエンドで悪い言葉をチェックしますか?
  2. JavaScriptで悪い言葉をチェックしますか?
  3. 挿入する前にストアド プロシージャ内の不適切な単語をチェックしますか?

最初の方法がベストだと思います。

このチェック用に最適化されたコードを教えてください

今、私はこの方法を使用しています

    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"));   
4

3 に答える 3

2

サーバー側でASP.NET コードをチェックインする必要があります。JavaScript またはその他のクライアント側のチェックは、簡単に回避できます。投稿したコードは、特に堅牢ではないことを除いて、正常に動作します (さまざまな単純なスペルミスが回避されます)。

于 2013-03-13T05:04:18.120 に答える
1

次のような順列を確認してください

安全 --> $3(ur3

そして、私はその言葉を次のようなものに置き換えます

[削除済み] または [検閲済み]

s***t のような言葉を使用することは、顧客や他の人にとって攻撃的であると見なされる可能性があります。

編集: ここで javascript の使用に関する HevyLight の考えを見てください... C# レイヤーで文字列フィルターを試すことができます (既に重い作業とデータベース呼び出しを行っていると仮定します)。データベースに書き込む前に、すべての文字列の投稿をフィルターに渡します (他の人が見ることができるようにします)。

于 2013-03-13T05:00:33.423 に答える
0

現実には、悪い言葉を 100% 防ぐことはできません。サーバー側で 2 段階認証を使用します (JS を無効にすることができ、SQL はこれを処理するのにあまり適していません)。

  1. 最もよく使用される最も一般的な悪い言葉のリストを作成します。これにより、おそらくすべての入力の 80% をキャッチできます。

  2. これらを手動で確認するよう通知する、疑わしいパターンのリストを作成します。

    などのパターンが考えられます。

    • a) Word に 2 つ以上の ** 文字が含まれている
    • b) Word に文字と、0、3、$ などの文字のいずれかが含まれている

いずれ、両方のリストを最新の状態に保つ必要があります。繰り返しますが、これで 100% のケースが解決するわけではありませんが、適切に実装されていれば、おそらく 95% のようにキャッチして修正できます。

于 2013-03-15T12:01:07.317 に答える