PHPコード内にパスワードを設定して、ブラウザのページを閲覧できないようにするにはどうすればよいですか?PHPコードの中にパスワードを安全に保存するには?
です。<?php $password = 'password' ?>
は十分ですか?これを行うためのより良い、より安全な方法がありますか?
PHPコード内にパスワードを設定して、ブラウザのページを閲覧できないようにするにはどうすればよいですか?PHPコードの中にパスワードを安全に保存するには?
です。<?php $password = 'password' ?>
は十分ですか?これを行うためのより良い、より安全な方法がありますか?
これは、保存するパスワードのタイプに依存します。
私は、ドキュメントルートの外にパスワードを格納すると実際に何かが変更されることはありません。 '<?php'タグ内にある限り、クライアントには送られません。 – nickf
ファイルがPHPによって処理される場合にのみ "012"が返されます。 PHPをインストールすると、クライアントにクリアテキストで送信される可能性があります。 –
@nickf FacebookとTumblrの両方が誤ってウェブサーバーの設定ミスによってPHPコードを公開しました。あなたにも起こることがあります。 http://techcrunch.com/2007/08/11/facebook-source-code-leaked/ http://staff.tumblr.com/post/3959106211/update-regarding-security-issue – ceejayoz
あなたのPHPコードはサーバー上で処理されます(バーリング設定エラー)。 <?php ?>;
ブロック内の何もブラウザに表示されません。デプロイメントサーバーでクライアントに構文エラーが表示されないようにする必要があります。つまり、エラー報告がE_PARSEを含まないものに設定されているため、ライブコードを急いで編集しないようにしてください。
編集:PHPの設定が破損した場合に公開を避けるために、文書ルート以外のファイルにそれらを保存するという点は確かに有効です。私がPHPを使用したとき、実行時にrequire
dだったhtdocsの外にconfig.incファイルを保存し、構成固有の変数(つまりパスワード)をエクスポートしました。一般的な目的のために、おそらく100%ではない水密性は十分
それは良い解決策ではありません。誰もがソースコードにアクセスできるチームで働いている場合はどうでしょうか。ダメダメダメ!ハッシュは行く方法です – knittl
ハッシュはどのように役立ちますか?ハッシュが "安全な"リソースに接続するのに十分であれば、パスワードを保存するよりも安全にハッシュを保存する方法はありますか? –
通常、2つのシナリオがあります。 [私の答え](http://stackoverflow.com/questions/1432545/how-to-safely-store-a-password-inside-php-code/1432589#1432589)を参照してください、それは両方について語る – knittl
基本、:
ハッシュお気に入りのアルゴリズムを使用して、パスワード(セキュリティ強化のための塩を使用)、およびハッシュを保存(塩)。 &ハッシュされた入力と保存されたデータを比較して、パスワードを確認します。
これを行うには方法がありません。しかし、PHPはサーバー側の言語であるため、保存したパスワードはPHPファイルに保存されたテキストをプレーンテキストとして表示することはできません。つまり、ブラウザに出力しない限り、目に見えないままです。
だから安全です。
何かを出力しない限り、PHPコードブロックをクライアントが取り出すことはできません。観察:
<?php
if($password=="abcd")
echo "OK";
else
echo "Wrong.";
?>
ユーザーは[OK]または[間違っていない]を取得できます。
最善の方法は、ルートディレクトリの上にパスワードを保存することです。あなたがphpファイルにパスワードを設定すると、phpファイルがサーバで実行されているため、本体を見ることができません。しかし、サーバがphpをサポートしていない場合、それらのファイルはテキストファイルとして配信され、誰でもそのパスワードを見ることができます。
からのすべての要求を拒否するように.htaccess
ファイルを使用することができますが、PHP以内にパスワードを取得できた場合、それは検索可能です...
そのあなたができる唯一のことパスワードは「保護された」場所に移動することです。
ほとんどのホスティング会社は、DBファイルなどを置くことができる別の場所を提供します。この場所には、ブラウザからアクセスできません。パスワードはそこに保存する必要があります。
しかし、あなたのサーバーにはまだ残っています。誰かがあなたのボックスにアクセスすると、彼はあなたのパスワードを持っています。
だから「安全なパスワード」
ザ・ようなものはありません - (彼はそれをデコードする方法を持って、あなたのPHPに取得し、彼は保護されたファイルへのアクセス権を持っている>彼はそれを読むことができます)あなたが持っている唯一のオプションはあなたのユーザーのためのパスワードを保存しないなどです...私はサービスに加入すれば気が狂ってしまいます。彼らはそれを「回収可能な方法」で保存します。それはあなたがすべきことではありません。
これは、すべてのハッシュとソルトが入る場所です。誰かがリソースにアクセスできるようにしたいと思っています。したがって、パスワードをハッシュ+ソルトし、そのサービスにアクセスするユーザーのためにDBに格納します。また、ユーザーが認証する場合、同じアルゴリズムを適用してハッシュを作成し、比較します。
まったく...だけどパスワードが盗まれた場合、無作為な保護手段を追加することで負債を減らすことができますか?私はデータベースのフィールド内のデータベースにパスワードをスクランブルした人と一緒に仕事をしました。私はまだ混乱している。アプリケーションが別のパスワードを使って別のデータベースを指し示すようにしたいときには、作業が難しくなりました。 – Kieveli
パスワードが「iamanuisance
」であるとします。コードにパスワードを保存する方法は次のとおりです。あなたのヘッダーのどこかでこれを滑らせてください。
//calculate the answer to the universe
${p()}=implode(null,array(chr(0150+floor(rand(define(chr(ord('i')+16),'m'),
2*define(chr(0x58),1)-0.01))),str_repeat('a',X),y,sprintf('%c%c',
0141,0x2E|(2<<5)),implode('',array_map('chr', explode(substr(md5('M#1H1Am'),
ord('#')-9,true),'117210521152097211020992101')))));function p(){return
implode('',array_reverse(str_split('drowssap')));}
は、念のためにそれが完全に明白ではありません、あなたは、簡単に$password
として後でパスワードにアクセスすることができます。乾杯! :P
yuck!あいまいさによるセキュリティは機能しません。期間。 – knittl
笑、同上。それはちょうど冗談として意味された;) – brianreavis
私は、通常、サービスのパスワードとして生のPHPコードを信頼しません。シンプルなPHP拡張モジュールを作成してパスワードを解放してください。これにより、ワーキングセットにはパスワードがないことが保証され、侵害されたマシンがハッカーへのサービスへのアクセスを許可するための追加のステップになります。
データベースに接続しようとしているパブリックサーバーにあるPHPスクリプトにパスワードを送信するために、2番目のWebサーバー(インターネット経由でアクセスできないイントラネットサーバーでも可能です)を作成するとどうなりますか?
このようにして、第2のwebseverでallowディレクティブを使用して、最初のものにのみ応答し、ほかの人のIPを拒否します。したがって、一般のアクセス可能なサーバーは決してパスワードを保存せず、必要なときにのみ要求します。 私は良いアイデアだと思いますが、どう思いますか?
私はそれは幾分合理的な考えだと思う。しかし、新しい質問を回答として投稿しないでください。 –
としては、サーバーのルートの外にあなたのハッシュ化されたパスワードを保存することができない場合には二つの値
if ($stored === hashedPassword('my password')) {
...
}
を比較し、その後、パスワードのSHA1を格納し、提案塩漬けと
function hashedPassword($plainPassword) {
$salt = '1238765&';
$pepper = 'anythingelse';
return sha1($salt . sha1($plainPassword . $pepper));
}
を浴びせと.htaccessファイルにそのファイルへのアクセスを禁止するようにApacheに指示することを忘れないでください。
<Files passwords.config.ini>
Order Deny,Allow
Deny from all
</Files>
あなたのパスワードをPHPファイルに保存したいのはなぜですか?これは、回答に多くの混乱を引き起こしている – knittl
私はクライアントのためのスクリプトを開発しています。私はクライアントがパスワードを知ることを誰も望んでいないので、「テスト」アカウントを使用しています。私は彼が簡単にパスワードをテストアカウントから私に知らせずに変更できる方法を見つけなければならない。 Btw、これはデータベースとのやりとりがありません。 – nunos
アカウント情報をPHPファイルに保存していますか?もしそうなら、受け入れられた答えははるかに良いものではない。このシナリオでは、ハッシュ+ソルトを使用します。あなたのクライアントはあなたに彼の塩漬けのハッシュを与えることができ、あなたは彼のパスワード(誰も知りません)を知る方法がありません – knittl