2011-02-12 10 views
2

ファイルとディレクトリのリストを取得するためにRESTful Webサービスを呼び出すjsTreeがあります。この呼び出しを行うユーザーのPOSIX権限に基づいて、このWebサービスが何を行うことができるかを制限したいと思います。特定のPOSIX権限で実行するAjax呼び出しを制限する方法はありますか?

つまり、この特定のWebサービスは、アクセスするPOSIXアクセス権を持つファイルとディレクトリのみを一覧表示する必要があります。

現在、WebサービスはCookie内の暗号化されたデータを検索し、Webサイトにログインしているユーザーを確認します。ユーザーが認証されると、WebサービスはjsTreeで指定されたフォルダ(たとえば、/home/userAのすべてのファイルとディレクトリ)に対する応答を吐き出します。 Webサービスは、サブディレクトリとサブディレクトリで再び呼び出されます。

ただし、ウェブサービスはrootレベルの権限で実行されるため、別のユーザー名が何らかの形でuserAで指定されているとします。 /home/userBを表示すると、userAには、表示権限が与えられていない可能性のあるファイルとディレクトリのリストが表示される可能性があります。

suExecには、指定したユーザーの権限でWebサービスを実行できるものがありますか?

私の特定のサービスは、File::Find::Ruleを使用して、指定されたパスの内容の詳細レベルリストを提供するPerlスクリプトです。

EDIT

すべてはSSL暗号化接続を介して送信されます。

+0

Hmm。たぶん、すべてのアクションを別のスクリプトに入れ、クッキー内の暗号化されたユーザー名に基づいて 'sudo'を実行しますか?あなたがrootとして実行しているのを見て、実際のユーザとしてsudoしても問題ありません。 –

+0

あなたはクッキーでユーザを暗号化しましたか? httpでデータを送信しますか?それは非常に悪い考えです。http://codebutler.com/firesheepで、誰かがコーヒーショップであなたのサイトをWi-Fi経由で使用した場合に起こりうることを簡単に説明しています。 – btilly

答えて

1

まず、多くの重大なセキュリティエラーがあります。可能であれば、低い権限ではなく、高い権限でWebサービスを実行する必要があります。そうすれば、誰かがあなたのWebサービスを妥協するならば、彼らは箱を妥協する必要があります。

第2に、ユーザー名をCookieで暗号化し、httpでデータを送信すると、ユーザーはセッションハイジャックに晒されます。あなたが実際のユーザーアカウントにアクセスしていることを考えれば、これは問題です。特にワイヤレスを使用する人の数と、何人の子供がポイントを獲得し、セッションをハイジャックするツールにアクセスできるかを考えると、

これらの点を理解した上で、いくつかのアプローチがあります。プリフォークWebサーバを使用していると仮定すると(マルチスレッドではなく)、POSIX :: setuidを使用して一時的に自分の希望するユーザに変更し、再度使用して通常のIDに戻すことができます。

もう1つの簡単な方法は、Webサーバーが実行するユーザーがアクセスできるスクリプトを、リストを作成するときと同じようにすることです。 sudoersを使用すると、パスワードなしでWebサーバーからアクセスできるようになります。 Webサーバーをrootとして実行する必要がないため、これを好むでしょう。

+0

すべてがhttpsを超えています。 –

関連する問題