ログ ページへのブルートフォース アタックや、複数のアカウント作成による嫌がらせから保護する方法について情報を収集しています。
最善の方法はキャプチャを使用することであるという結論に達しました (Stackoverflow の皆さんに感謝します)。
しかし、読みにくいキャプチャやアクセント付きの文字は、ユーザーが Web サイトを使用するのを思いとどまらせる可能性があります。
そこで、自分のサイトに合わせた使いやすい小さなスクリプトを見つけました。これは、 0 から 10までの 2 つの数字を合計することを提案する単純な数学のキャプチャです。数字ではなく、 「1」「2」「3」という単語が表示されます。
私の質問は次のとおりです。
1) この小さなキャプチャは、それ自体で十分なセキュリティを提供しますか?
2) 統合した方法は安全ですか? (それをバイパスする方法はありますか?)
800 行のコードを貼り付けないように要約を作成しました。
キャプチャスクリプト:
$n1 = mt_rand(0,10);
$n2 = mt_rand(0,10);
$fig = array('zero','one','two','three','four','five','six','seven','eight','nine','ten');
$result = $n1 + $n2;
$sentence = $fig[$n1] .' plus '.$fig[$n2];
$_SESSION['captcha'] = $result;
$captcha_label = "<label for='captcha' >How much does ".$sentence."make?</label>";
echo $captcha_label."</label><input type='text' name='captcha' value=''/><br />";
echo "<input type='submit' name='create' value='create account'>";
ページ:
- フォーム.php:
すべての「アカウント作成」入力フィールド + キャプチャ
=>テスト
test.php:
if($_POST['captcha'] != $_SESSION['captcha']){
}
$_SESSION['captcha_control'] = "false";
次に、すべての「アカウントの作成」 $_POSTS がインジェクション テストされます
それらのいずれかまたはキャプチャが "false" を返す場合、スクリプトは => problem.php に偏向します
- 問題.php:
すべての「間違ったフィールド」が強調表示された初期フォームをエコーし、新しいキャプチャが表示されます。検証 => test.php
に戻る
どうもありがとう。