0

友人だけが知っている私の非常に小さなウェブサイトのために、パスワード システムを開発しています。このようなphpファイルにパスワードを保存しています。

<?php
if($_GET["p"]=="password"){
?>
user1 password1
user2 password2
<?php
}
?>

次に、 file_get_contents(pass.php?p="password"); でパスワードを読み取ることができます。また、テキスト ファイルと同じように php ファイルに書き込むことで、パスワードを書き込むこともできます。この方法は安全ではありませんか? データベースを必要としない同様の方法はありますか? 私のサイトに暗号化は必要ないと思います。パスワードが侵害されたとしても、それほど害はありません。

4

4 に答える 4

2

うわあ。かなり不安定と言えます。データベースを使用しない理由はありますか?

また、必要に応じてデータベースなしでより安全にするために、 md5および/またはsha1エンコードを使用してユーザー名とパスワードの組み合わせを作成し、ディレクトリに拡張子のないファイルとして保存し、組み合わせが正しいかどうかを比較することもできますファイルが存在しています

于 2013-02-02T14:35:49.730 に答える
0

パスワードをファイルに保存するかデータベースに保存するかに関係なく、同じ対策を講じる必要があります。そこにプレーンテキストのパスワードを保存しないでください。代わりに、パスワードのハッシュ値のみを保存してください。そのため、誰かがファイルを読み取ることができたとしても、その人はパスワードを知りません。副作用として、特殊文字のエンコードの問題も回避されます。

パスワードをハッシュするには、BCrypt などの低速のキー派生関数を使用します。MD5 や SHA-512 などの高速ハッシュ関数は、パスワードのハッシュには適していません。単純に、攻撃者がブルート フォース攻撃を実行する速度が速すぎるためです (一般的なハードウェアで 1 秒あたり約 8 ギガの MD5 値)。

PHP はすぐに 2 つの単純な関数password_hash()を提供しpassword_verify()、そのような BCrypt 値を生成します。古い PHP バージョン用の関数も存在します。この回答をご覧ください。

于 2013-02-03T20:02:27.100 に答える
0

サイトhttp://www.hackthissite.orgをチェックしてください。人々が Web サイトをハッキングする方法の実例を示すことができます。基本的なミッションの 1 つは、含まれているテキスト ファイルからパスワードを取得する方法を学習することです。誰かがテキストファイルの所在を把握した場合。隠しファイルは簡単に見つけることができ、すべてのパスワードにアクセスできます。それはあなた次第です。セキュリティを気にしないのであれば、ログインシステムさえ持っていないかもしれません. それでも気にする場合は、mysql を入手してください。これは無料で、使い方も難しくありません。

于 2013-02-02T14:56:27.297 に答える
0

これらは、現在の方法を改善するためのいくつかの提案です。

  • 私が覚えているように、apache rewrite モジュールを使用して、このファイルへの直接アクセスを制限することができます。

  • ページ アクセスに使用するメインのパスワードとして、複雑なパスワード (特殊な文字と数字を含むフレーズ) を使用します。

  • メインのパスワードもプレーンテキストを入れる代わりに、パスワードのmd5またはsha1ハッシュ値とGET変数の値のmd5およびsha1ハッシュ値を比較します。

  • プレーン テキストのパスワードを保存する代わりに、パスワードの md5 または sha1 ハッシュを保存します。次に、パスワードを比較するときに、ユーザーが入力した値をその値のハッシュに変換し、保存されているものと比較できます。

  • 私が覚えているように、ハッシュするときはシードを使用できます。これにより、セキュリティが少し向上します。

これにより、誰かがサーバーにログインした場合、ユーザーのパスワード テキストを直接取得できないため、セキュリティが少し強化されます。ただし、レイン ボウ テーブルを使用すると、ほとんどのハッシュ値が壊れる可能性があることに注意してください。ただし、これは少なくとも平文のパスワードを保存するよりも安全です。

ただし、このようなファイルではなく、データベースにデータを保存できる方が望ましいです。

于 2013-02-02T15:12:53.927 に答える