質問: "www.hoge.com/article/comment/index/\(self.userId)" ``` ``` //CakePHP側 class CommentsController extends AppController { function index(){ //処理を記載 } } ``` その上で、セキュリティ上の質問がございます。 iOSアプリではなくブラウザを立ち上げたユーザーが、上記で記載したURLを直接検索窓に"www.hoge.com/article/comment/index/2"のように入力した場合、ブラウザ上にDBから取得してきたデータがブラウザ上に出力されてしまう、または何らかの方法でデータを取得できてしまったり、CakePHPのアクションが実行されてしまうのでしょうか? 現在iOSアプリ版のCakePHPおよびデスクトップ版のソースを同じドメイン(サーバー)下に配置しているため、デスクトップのブラウザ上からwww.hoge.comにアクセスして来たユーザーが故意に上記のようなURLを叩いた際に、iOSアプリ版のCakePHPにおいて予期せぬアクションが実行されたりしてデータが改ざんされたり、セキュリティホールになりえるのではないかと心配しています。 もし上記が私の言うとおりであるならば、これを回避する方法としてどのような方法がございますでしょうか? 例えば、下記のようにiOS版のCakePHPを管理するサーバー・ドメインとデスクトップ版のサーバー・ドメイン別個に切り分けて対応するといったことでしょうか。 (例) www.hoge.com -> デスクトップ版用のサーバーやCakePHPを管理するドメイン www.hogehoge.com -> iOSアプリ版用のサーバーやCakePHPを管理するドメイン まだ勉強し始めた者なので、わかりづらい部分もあるかと思いますが、何卒よろしくお願いいたします。
回答: > > OSアプリではなくブラウザを立ち上げたユーザーが、上記で記載したURLを直接検索窓に"www.hoge.com/article/comment/index/2"のように入力した場合、ブラウザ上にDBから取得してきたデータがブラウザ上に出力されてしまう、または何らかの方法でデータを取得できてしまったり、CakePHPのアクションが実行されてしまうのでしょうか? > > > WEB API である以上、**通常のブラウザでアクセスしたのと同様の動き**をします。 ユーザーIDとパスワードでログインするような仕組みを持つアプリケーションに、認証なしで閲覧できるようであれば論外ですが、そうでないのであれば問題ではないと思います。 認証すべきアプリケーションであるなら、APIトークンを発行するなどして認証すればよろしいかと思います。