こんにちは、私はPHPを初めて使いました。データベース接続では、パスワードを直接.phpファイル( "mysql_connect($ host、$ user、$ pass、$ db"))に入力することがわかりました。私はハッシングを使用するつもりですが、問題はユーザーがプリコンパイルされた.phpファイルをダウンロードしてソースコードを表示し、データベースパスワードを取得できるかどうかです。 "domain/home"と書いてあれば、ユーザーがディレクトリに入るのを防ぐ ありがとうございます。PHP5データベースのパスワードは盗まれる可能性がありますか?
答えて
他の回答者が述べたように、通常、ユーザーはPHPコードを見ることができないため、これは問題ではありません。ただし、コードを他の人と共有する予定がある場合は、ユーザー名とパスワードを誰かに送信する前にそれを削除する手間がかかります(パスワードを忘れた場合)。
したがって、情報をファイルに入れてからPHPに読み込むことができます。たとえば、自分のホームディレクトリにmysql.ini
というファイルを作成し、その中に以下の情報を入れる:
host = "127.0.0.1"
username = "user"
password = "pass"
database = "db"
次に、このように、PHPにそれを読んで接続します
$settings = parse_ini_file('/home/mysql.ini');
mysql_connect($settings['host'], $settings['username'], $settings['password'], $settings['database']);
を確認することを忘れないでくださいファイルが一般にアクセスできないWebサーバーのセクションにあることを確認します。そうしないと、ユーザーはログイン情報を読み取ることができなくなります。
ハッシュパスワードで接続できる場合、攻撃者はハッシュを取得して接続することもできます。あなたのデータベースにパスワードを保存していても、データを保存するときには本当に使えない場合にはベース証明書。
ほとんどの人は、メインアプリケーションファイル内のすべての資格情報でmysql_connect
コールを直接呼び出すのではなく、資格情報を含むドキュメントルート外の構成ファイルを少なくともrequire
にします。
config.php
のようなファイルがドキュメントルートの外側にある場合、サーバーにディレクトリトラバーサルホールが見つからない限り、config.php
はリモートからアクセスできません。
あなたのPHPページのソースを表示する - 任意のPHPコードを参照してください?ユーザーのブラウザに送信される前にサーバーによって実行されるべきではありません。サーバー上で何か不具合が発生し、PHPファイルが解析されない場合に備えて、ログイン情報をWebルートの下に置いておくことをお勧めします。
ありがとう、あなたの答えは、彼らは非常に有用だった:) –
ユーザーはmod_phpを自身を通して
ないプリコンパイルされた.PHPファイルをダウンロードすることができますが、Webアプリケーション(またはWebサーバー)でのいくつかのセキュリティ上の脆弱性が存在する場合、次に誰かが確かにランダムなPHPを読むことができますファイル。攻撃者がWebサーバーに侵入する可能性がある場合、Webルートの外部に格納していてもデータベースパスワードを取得できます。
これはある日、となるはずです。そのような情報漏えいの結果を制限しようとします。接続するデータベースアカウントを制限することに重点を置いてください。 Webアプリケーションは、データベース内のすべてのテーブルに対する読み取り/書き込みアクセス権を持つデータベースアカウントに接続しないでください。 DBユーザーは、読み込みが必要なテーブルだけを読み込み、書き込みが必要なテーブルに書き込むように制限する必要があります。
セキュリティの追加レイヤーは、サイトユーザーが実行できるアクションについてデータベース自体でチェックを実行できるため、ストアドプロシージャを使用すると便利です。次に、Web DBユーザーは、プロシージャを介してデータベースと対話することができます。これにより、ランダムなデータベースクエリを発行することができたとしても、攻撃者が実行できるアクションが制限されます。
- 1. データベースが破損する可能性はありますか?
- 2. getpassモジュールのテスト: 'パスワード入力がエコーされる可能性があります'
- 3. SQLiteデータベースのデータを失う可能性はありますか?
- 4. Rails Spreeのデバッグ。データベース関連の可能性があります
- 5. これはPHPバグの可能性がありますか?
- 6. メモリリークの可能性があります。
- 7. パスワードのmd5ハッシュが実際に元のパスワードを持たずに見つかる可能性があります
- 8. あるマシンではパスワードが紛失する可能性がありますが、別のマシンではパスワードがありません
- 9. スタックサイズやオーバーフローの可能性があるメソッドが多すぎる可能性はありますか?
- 10. iframeのセッションが異なる可能性はありますか?
- 11. メモリアクセスに問題がある可能性がありますか?
- 12. 可能性がありますssh_exchange_identificationエラー
- 13. データベースからJavaクラスに到達する可能性はありますか?
- 14. 精度が低下する可能性はありますか?
- 15. REMOTE_ADDRが空白になる可能性はありますか?
- 16. どのファイルが含まれている可能性がありますか?
- 17. Enumが肥大化する可能性がありますか?
- 18. pthread_cond_signalがクラッシュする可能性がありますか?
- 19. Delphi DLLがアンロードされていない可能性があります.GDIがまだ割り当てられている可能性があります。
- 20. サイトのスクレイピングをブロックする可能性がありますか?
- 21. where joinはnullがあり、count()= 0の可能性がありますか?
- 22. SQLデータベースに挿入する範囲外の可能性があります
- 23. PDFKit annotation nullクラッシュする可能性のあるヌル属性になる可能性があります
- 24. 行数が異なる可能性がありますか?
- 25. H2データベースで問題が発生している可能性があります。
- 26. PHPがリダイレクトを混乱させる可能性がありますか?これは可能ですか?
- 27. DjangoフィルタにはNoneが含まれる可能性があります。
- 28. jQueryまたはJavaScriptがロードされている可能性があります
- 29. TypeScript strictNullChecks - オブジェクトが 'null'である可能性があります
- 30. コアデータリレーションシップにアトリビュートがある可能性があります
トピックオフ:mysql拡張機能は古くなっており、廃止予定です。 mysqliまたは[PDO](http://php.net/)に切り替えてください。 – outis