1

サイト全体を完全に書き直したい/忙しい. この時点で、私は「メンバーおよび安全エンジン」と呼んでいるものに取り組んでいます。セキュリティと SQL インジェクションについてよく読んでいますが、かなり複雑です。ps。私のサイトは、約 250 人以上のメンバーがいるプロの金儲けサイトというよりは趣味です。

ユーザー名とパスワードには、az、AZ、および 0-9 の文字のみを許可します。if(isset(post))私は-function でこれをチェックします:

if(ctype_alnum(mysql_real_escape_string(stripslashes($string))) == false) {
    header to error-page; exit;}
else {continu with script}

このチェックは、パスワードとユーザー名の両方に対して行われます。

誰かが未知のユーザー名または既知のユーザー名で間違ったパスワードでログインしようとすると、そのアクションは IP アドレスを含む特別なテーブルに記録 (挿入) されます。不明なユーザー名でログインを 10 回試行するか、間違ったパスワードで 6 回試行すると、メンバー エリアから IP アドレスがブロックされ、すべての非メンバー ページでフォームとフォームの送信が表示されず、フォームの送信ができなくなります。この IP ブロック。フォームが送信されると、この ip-check が行として表示されます... ip がテーブルにある場合は、ヘッダー (エラーページへ); 出口;。

私の質問:

  • IP アドレスを文字列に配置する場合、セキュリティ チェックを行う必要がありますか? $xip = $_SERVER['REMOTE_ADDR'];これ$xipは、不明なユーザーまたは間違ったパスワードでログインしようとすると、テーブルに挿入されます。
  • これは、ハッキングや SQL インジェクションに対して (かなり) 安全な環境ですか?
  • そうでない場合は?助けと提案に本当に感謝しています(ここに完全な解決策を書くことは非常にありがたいですが、解決策への正しい道を私に送ってくれると、もっと多くのことを学びます)
  • $_cookieまたはからこの情報を取得するときに、「ctype_alnum」チェックも実行する必要があり$_sessionますか?

ps。私はオランダ人なので、ほとんどすべてのテーブル名、列名、フォーム入力フィールド名などにオランダ語が使われています。私はまだそれに取り組んでいますが、サイトが完成すると、「パスワード」、「パス」、「ユーザー」、「ユーザー ID」などの単語が私のサイトに表示されなくなります。

4

2 に答える 2

1

MySQLi または PDO で準備済みステートメントを使用することは、SQL インジェクションを防ぐための最初のステップとして必須であり、いずれにしても mysql_* コマンドは非推奨です。

しかし、SQL インジェクションを防止するためのベスト プラクティスに関する質問に答えるのに最適な場所は、OWASP です。OWASP には、一般的な方法論とコードのレビュー、および言語固有のガイドラインとライブラリの両方に関する多くの優れたリソースがあります。

https://www.owasp.org/index.php/Guide_to_SQL_Injection https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection

于 2013-05-23T16:55:14.700 に答える
0
  1. いいえ、その必要はありません。この変数は安全です。見てください:サーバーリモートアドレスを信頼しても安全ですか
  2. 場合によっては、認証コード全体を投稿する必要があります
  3. 通常、DB からすべてのユーザーを選択し、それらを反復処理してユーザー名とパスワードを比較し、一致するものを見つけることをお勧めします。そうすれば、SQL ステートメントにユーザー入力を配置する必要がなくなります。
  4. これらのコンテンツで何をするかによって異なります
于 2013-05-23T16:59:07.920 に答える