2011-06-28 25 views
0

私は、顧客がジョブ番号に対応するフォルダを作成し、そのフォルダのカスタムユーザ名/パスワードを割り当てることを許可する管理ページを必要とするPHPプロジェクトを持っています。その後、顧客がそのフォルダにログインしてファイルをアップロード/ダウンロードするために使用する別のページが表示されます。認証を処理する最良の方法は何ですか?私の最初の考えは、フォルダ内のテキストファイルにユーザー名とパスワードを入れて、サーバーが.htaccessを使ってページを提供できないようにすることでした。私はそれを安く簡単に保つために、プロジェクトのデータベースに触れないようにしています。誰にどのようにこれを処理するためのよりよい提案がありますか? FYI、これは高いセキュリティアプリケーションではありません。私は、顧客がSSL証明書を発行することさえ疑うでしょう。フォルダごとのカスタムユーザの資格情報

+0

また、私はいくつかの有用な情報であると信じて以下の回答を提供しました。 – Alfred

答えて

1

無料でCA証明書でSSL証明書を取得できます。

それ以外に、.htaccess + .htpasswdを使用することは合理的なオプションです。

+0

.htpasswdではパスワードをハッシュする必要はありませんか? PHPからファイルを生成するには? (私は詳細を見ていません。.htpasswdファイルを生成するためのPHP関数が組み込まれている場合は謝罪してください。または私の前提に誤っています) –

+0

Nevermind。簡単なGoogle検索で答えが見つかりました... http://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/ –

1
> What's the best way to handle the 
> authentication? My first thought was 
> to put the username and password in a 
> text file inside the folder and 
> prevent the server from serving the 
> page using .htaccess. I'm trying to 
> avoid touching a database for the 
> project as I want to keep it cheap and 
> simple. 

OpenIDすべてのあなたの問題(ほとんど)への答えです:

  • あなたは店のユ​​ーザー名とパスワード=> BADを持っていない(securilyパスワードを保存することは非常に困難な概念です)。
  • OpenIDがあなたの認証を処理するので、データベースに触れる必要はありません。
  • openIdには非常にやさしいライブラリがあり(LightOpenIDは非常に親切です)、無料(オープンソース)です。

http://www.codinghorror.com/blog/2008/05/openid-does-the-world-really-need-yet-another-username-and-password.html

我々は最終的に stackoverflowのコードになります で作業を続けるように、我々は遅ればせながら、我々は上のユーザ名とパスワードの供給過剰 に貢献するだろう を実現ウェブ。 私は50のオンラインログインを持っており、私は のいずれも覚えていません! を追加すると、 の最初のセットが となることはほとんどありません。

あなたはopendID(Facebook Connectなど)を使用して認証を行うべきだと思います。私はstackoverflow.comのような認証を扱う小さなプログラムを作成しました。 http://westerveld.name/php-openid/で私の簡単なウェブホスティングでこれをデモすることができます。 https://github.com/alfredwesterveld/php-openidにコード(LightOpenIDを使用しています)をダウンロードできます。


> I'm trying to avoid touching a 
> database for the project as I want to 
> keep it cheap and simple. 

私が正しく行われていない場合、把握することは、あなたのコードベースが難しくしようとしているので、あなたが感動データベースを避けたいだろう理解しています。しかし、データベースを使用して規模を拡大することは必須であり、切り替えが必要なときにこのコンセプトをコード化しないと(システムがもう処理できないため)、メンテナンスの難しさがあります。

また、データベースはI/Oの小さな細部を抽象化するため(データベースを使用するとコーディングが容易になります)、コーディングに役立ちます。

SQLiteはそのソフトウェアライブラリです:PHPは(> = 5)/あなたのためSQLiteをインストールしコンパイルしないと、あなたはそれを使用することができますので、幸いなことに、あなたは、MySQL/PostgreSQLのようなフル屈曲データベースを使用する必要はありません は、自己完結型のサーバーレス構成のゼロコンフィギュレーション トランザクション型SQLデータベースエンジン を実装しています。 SQLiteは、世界で最も広く配備されたSQL データベースエンジンです。 SQLiteのソースコードは で、公開されている です。

コードからデータベースを抽象化するには、PDOについてSQLiteに接続する方法を学ぶ必要があります。このintroductionは正しく(グッドリード!)これを正しく行う方法を学びます。

これらの部品は特に重要である:

  • Connecting
  • Prepared Statements SQL-注射を防ぐために。

次に、実装をSQLiteからMySQLに変更する場合は、new PDOの代わりにSQLiteの代わりにMySQLを使用するように簡単になります。


> What's the best way to handle the 
> authentication? 

OpenIDの認証を処理し、authorizationに返さOpenIDのURLを(ユニーク)を使用してみましょう。あなたはこの情報をあなたの望むデータベースの中に簡単に保存することができます。


> prevent the server from serving the 
> page using .htaccess 

の.htaccessは、特定のファイルへのアクセスからユーザーを防ぐために使用することができます。可能であれば、Webブラウザにファイルが提供される場所以外の場所にこれらのファイルを置くことはさらに簡単です。もちろん、ユーザーがそのファイルにアクセスしてダウンロードするようにしたい場合は、その場所に入れておく必要がありますが、承認を行う必要があります。


> I doubt the customer will even spring 
> for an SSL certificate. 

パスワードの盗難は、私は確かにまったく好きではない何かです。過去に私がセキュリティを認識していなかったとき、私はすべてのサイトに1つのパスワードを使用しました(もっと覚えていることは難しい)。Lifehacker got hacked私は重要なサイトのパスワードを少なくとも変更する必要がありました。今、私はパスワードを安全に保管するために優れたLastpassを使用しています。私はすべてのサイトに一意のパスワードを作成します。 SSLを使用しない場合、情報(パスワード)を盗むことは、blacksheepのように簡単に行うことができます。 しかし、幸いにもOpenID(Google、MyOpenID、Yahoo!などの適切なOpenIDプロバイダ)を使用する場合、ほとんどの場合、認証はSSL経由で行われます。

関連する問題