1

この質問は、私が受けた就職面接に由来します。インタビュアーは、私が構築したウェブサイトについて尋ねました。私は学校を出たばかりで、よくわからず、尋ねる人もいなかったので、まだ多くの間違ったことをしていました. ホワイトボードにインタビュアー用の Web サイトをレイアウトしたとき、彼は、私がデータベースへのアクセスに Web サービスを使用していないことに驚いていました。彼は、これは安全ではないと示唆しましたが、詳細には触れませんでした。彼らは、私がセキュリティ対策としてこれを行うとは思いもよらなかったと考えました。私のコードはすべて1ページでした。MVC なし、php 接続、すべての php/mysql 選択、挿入などはすべて、html/javascript および他のすべてと同じファイルに php で書き込まれました (さまざまな理由で間違っていますが、現時点ではトピックではありません)。私のページは https で保護されていて、それで十分だと思っていました。また、振り返ってみると、彼は私のデータベースがローカルホストにあることを知らなかったかもしれません。質問の混乱は、当時と現在の私の知識不足から生じています。

したがって、本当の質問 (私が推測する) は、サイトを安全にするために、データベースの中間として機能する Soap のような Web サービスが必要でしたか (ローカルホストであっても) でしょうか? 私の仮定は、石鹸サーバーがすべての mysql ステートメントを実行し、私が興味を持っていた値を返すということです。または、代わりに、SAOP サーバーが Mysql データベースを取得して、mysq 関数と値を実行します (これにより、実際のセキュリティ値が追加されると思います)。 . サーバー側のphpとhttpsを使用していたので、安全だと思いました(mysqlインジェクションなどを除いて、mysql_real_escape_string()などの他のものを説明する必要がありました)。

要するに、私の質問は、soap を使用して、メイン ページ ファイルと、ローカルホストで実際に php mysql select ステートメントを実行したファイルとの間で、https に対してセキュリティ値を追加することです。php を接続してから、Mysql サーバーを使用して、https で保護されたページでいくつかの mysql 関数を実行することはできませんでしたか? それは安全ではないでしょうか?

私が MVC モデルを使用していないことを除けば、https と SOAP について賢明なアドバイスをいただけますか?

私はphpでいくつかの独学をしようとしています。私は現在、主にスクリプトを書いている別の言語で働いています。私はPHPに本当に情熱を持っており、学びたいと思っていますが、どこに確実に向かうべきかわかりません.

ありがとう

4

1 に答える 1

1

データベースへのアクセスを保護する概念と、Web サービスへのアクセスを保護する概念が混在しています。

使用する Web サービス アーキテクチャに関係なく、データベースを保護するためのベスト プラクティスに従う必要があります (SQL インジェクションを防止する、資格情報を公開しない、ファイアウォールを介して DB を Web サービス サーバーから物理的に分離するなど)。

Web サービスを一般公開しない場合は、Web サービスへのアクセスを個別に制御する必要があります。SOAP と REST はどちらも、まさにそれを行うための堅固なメカニズムを提供します。

SOAP 自体は、サーバー上のファイルへのアクセスを保護しません。Web サービスへのアクセスを保護するメカニズムを提供します。

アップデート

「セキュリティ」の目的で Web サイトとデータベースの間に Web サービスを要求するのはばかげた考えです。Web サービスは、セキュリティ層としてではなく、機能にアクセスするための代替インターフェイスと考える必要があります。

実際、Web サービスを公開しない限り、ハッカーは Web サイトではなく (またはそれに加えて) Web サービスを攻撃するだけです。公の場でそれを隠してしまうと、何のメリットもないのにかなりのエンジニアリングの労力を費やしたことになります。

アーキテクチャの観点からは、ユーザー インターフェイスからデータ アクセスを分離することが賢明です (レイヤーが同じマシン上で実行されているか、別のマシンで実行されているかに関係なく)。ASP.Net の世界では、Repository パターンと Unit of Workパターンは非常に一般的です。どのパターンが PHP で一般的に使用されているかわかりません。DB 分離のためだけに別の Web サービスを作成することは、確かにそのようなパターンではありません。

于 2013-02-10T01:52:30.723 に答える