2011-12-09 19 views
0

MySQLデータベースにデータを注入するための.PHPスクリプトを呼び出すWebサイトを開発しています。PHP Webサービスコールの保護

これらの.PHPスクリプトにはセキュリティがないため、適切なパラメータ名を知っていてデータをデータベースに挿入すると、世界中の誰でもWeb上で実行できます。

私はセキュリティについてほとんど知っていないので、私はこれらの "Webサービス"を保護するソリューションを探しています。

私は、SSLを使用することが行く方法かもしれないが、わからないことを読んだ。

誰かが推薦をして、これを実装する方法についてチュートリアルやウェブサイトを指摘したら、私は非常に感謝しています。

問題がある場合は、Apache Webサーバーを使用しています。

+0

SQLインジェクション(http://en.wikipedia.org/wiki/SQL_injection)に注意して、「セキュリティなし」という意味を正確に知らなくても。 SSLは、クライアントからサーバーへの転送を保護する単なる方法ですが、データベースに書き込むデータには影響しません。世話をするにはもっとたくさんのことがありますが、正確に何を「安全」にしたいのか(そしておそらくいくつかのコードを表示する)ことについて、より具体的なものにする必要があります。 – Quasdunk

+0

最初にhttp接続を介してそのようなスクリプトを呼び出す必要がありますか?そうでない場合は、代わりにPHP CLIを見て(そして使用する)ことをお勧めします。これははるかに安全なアプローチです。 – maraspin

答えて

2

SSLで問題を解決することはできません。誰かがhttp://yoursite.com/service.phpを打つことができれば、彼らはhttps://yoursite.com/service.phpを打つこともできます。 SSLシンプルにより、ワイヤを通過する実際のデータが暗号化されます。しかし、暗号化された注入要求は、暗号化されていない標準の暗号化と同じ効果を持ちます。データはまだデータベースに注入されます。

必要なものは、ある種のパスワードシステムです。ベアボーンの最小システムでは、各リクエストとともに秘密の単語を送る必要があり、その単語のないリクエストはすべて拒否/無視されます。しかし、あなたはこの秘密の言葉を秘密にしておかなければならず、ウェブ上の何もかもは秘密にとどまりません。

次に、サービスの許可された各ユーザーに特定のキーを割り当てます。ユーザーが自分のキーを他の人と共有することを妨げるものはありませんが、DIDがキーを共有している人を追跡して打ち負かすことができるユーザーごとのキーがあります。

これまでは、HTTPレベルの認証とユーザー単位のアクセスキーを使用することができ、APIでのカジュアルなポンピングを防ぐことができます。 httpレベルのパスワードがなければ、APIスクリプトは呼び出されず、正しい場合でも適切なAPIキーが存在する必要があります。

+0

これを使用して、基本的なhttp認証を実装できます。http://php.net/manual/en/features.http-auth.php – SuitedSloth

+0

.PHP Webへの接続にSSLを使用する証明書をクライアントに要求する必要がある場合それは安全だとは考えられていませんか? – user1090205

関連する問題