1

そのため、自分のサイトのGUI管理領域を構築しています。ログインするのは私だけで、データベースからの情報のクリーンな(印刷可能な)レイアウトが表示されます。

これが私がセキュリティのためにやっていることです。これが良いと思うかどうか、そして私がどのように改善できるかを教えてください。

  1. すべてのページのヘッダーは、チェックするadmin == trueか、ダイ/リダイレクトします
  2. 自宅に専用IPがあり、自宅からのみログインするためです。ログインフォームページを含むすべてのページでIPをチェックしました$_SERVER['REMOTE_ADDR'];!=ヘッダーリダイレクト
  3. ログインスクリプトはフォルダのアクセス許可にdir設定されています。700
  4. 私のログインとpwには、文字、数字、特殊文字の合計10の組み合わせが含まれています。PWはSHA2HASHとして保存されます
  5. ログインスクリプトがregex前にチェックしsql、クレデンシャルが別の管理テーブルに保存されます
  6. サイト全体がSSL上にあります。

それで、これは安全ですか?もっとできますか?これはやり過ぎですか?あなたの意見や提案を共有してください(特に私のIPチェックに関して。それは回避できますか?)

regex悪いデータをエスケープするために使用されます-すべてのフィールドと組み合わせて

function escape_data ($data) {
    if (function_exists(‘mysql_real_escape_string’)) {
        global $dbc;

        $data = mysql_real_escape_string (trim($data), $dbc);
        $data = strip_tags($data);
} else {
        $data = mysql_escape_string (trim($data));
        $data = strip_tags($data);
        }
        return $data;

    }
4

3 に答える 3

2

管理者ページにとって何もやり過ぎではありません。できるだけ多くのセキュリティが必要です。

あなたの方法に関しては、それらのほとんどはかなり良いですが、いくつかの提案:

  • 700に設定chmodしても、誰がHTTPリクエストを行っているかに関係なく、ファイルにアクセスしているのはWebサーバーであるため、他のユーザーが少なくとも管理ページにアクセスできなくなることはありません(これを使用していると思います)。
  • チェックするよりも$_SERVER['REMOTE_ADDR']、一意のユーザーSSL証明書を作成し、そのユーザー証明書を持つコンピューター(つまり自分のコンピューター)のみにサイトへのアクセスを許可する方がおそらく安全(かつ簡単)です。これは、Apacheセットアップで実行でき(SSLをセットアップできた場合は、SSLに戻ってユーザー認証をセットアップできます)、chmod問題を解決し、他のユーザーがIPをスプーフィングして管理ページにアクセスするのを防ぎます。
  • 自宅のコンピューターにSSHで接続する必要がない場合は、SSHデーモンを無効にします。これにより、(うまくいけば)他の人があなたのコンピュータを標的にしてあなたのサーバーを追いかけるのを防ぐことができます。

これらは私が最初に考えることができるものです。彼らが私に来たら、私はさらに追加します。

編集:そうです、ロギング!管理ページで発生したすべてのことをログに記録します。すべての。SSLの場合、リクエストの場合、データベースアクセスの場合、すべての場合。次に、ログ監視プログラム(例:)を入手しlogwatchて、疑わしいアクティビティがないか監視します。

于 2012-07-23T21:42:31.220 に答える
0
  • また、Cookieにセキュア、ドメイン、およびhttpのみのフラグを設定しましたか?

ログインスクリプトはSQLの前に正規表現をチェックし、クレデンシャルは別の管理テーブルに保存されます

  • これはあなたが何か間違ったことをしているように聞こえます。プリペアドステートメントを使用していませんか?
  • CSRF保護を使用していますか?
  • XSS攻撃を防いでいますか?
  • ブルートフォースを防ぐ方法はありますか?あなたのサイトとあなたのサーバーの両方に?
  • データベース内のパスワードをハッシュしますか?これにはどのアルゴを使用しますか?
  • サーバーに侵入検知をインストールしましたか?

mysql_*また、新しいコードに関数を使用しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが表示されますか?代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。決定できない場合は、この記事を選択するのに役立ちます。あなたが学びたいのであれば、ここに良いPDOチュートリアルがあります。

PSは、私が知る限り、$_SERVER['REMOTE_ADDR']変数を使用するのはかなり安全です。なぜなら、悪用可能であることがわかる唯一の方法は、攻撃者がマシンを介してプロキシするか、IPをスプーフィングすることだからです。そして(間違っているときは私を訂正してください)両方を行うのはかなり難しいです。

PS 2:

コードで使用していることを確認してください。また、使用を中止してください:-)このglobalウォッチの詳細については、依存性注入とSOLIDプログラミング全般について説明しています。セキュリティとは何の関係もありませんが、プログラミングのベストプラクティスにすぎません。

于 2012-07-23T21:39:15.503 に答える
0

SQL用にプリペアドステートメントを使用し、ブルートフォース保護を使用し(誰かがPCでプロキシを取得した場合)、SHA2を使用しないようにしてください。SHA2は、パスワードをハッシュするためのひどい、役に立たない方法です。関数を調べるか、 pkbdfcryptを使用するか、少なくとも; プリミティブsha512。(「ハッシュ」関数を参照)

于 2012-07-23T21:47:22.850 に答える