アクセス制御や認可制御の欠落(安全なウェブサイトの作り方)

IPAの「安全なウェブサイトの作り方」を読み進める第8回!
※この記事は上記の文書を個人的にまとめた防備録となるので注意。

この文書の目次は以下。

1) SQL インジェクション
2) OS コマンド・インジェクション
3) パス名パラメータの未チェック/ディレクトリ・トラバーサル
4) セッション管理の不備
5) クロスサイト・スクリプティング
6) CSRF(クロスサイト・リクエスト・フォージェリ)
7) HTTP ヘッダ・インジェクション
8) メールヘッダ・インジェクション
9) アクセス制御や認可制御の欠落

前回はメールヘッダ・インジェクションについて学んだ。
今回は「アクセス制御や認可制御の欠落」について。

1.アクセス制御や認可制御の欠落とは

アクセス制御とは、Wikipedia先生より。

あるサブジェクト(能動体、人間やプロセス)が、どのオブジェクト(受動体、システムやファイル)に対して、どのアクセス(読み/書き/実行)ができるかを許可したり拒否したりする機能を指す。

サブジェクトってのは主題、つまり主体のこと。なんか難しいな。

つまり、「誰」がどの「ファイル」に対してどんな「権限」でアクセスできるか、をコントロールすること。
ユーザに対する閲覧権限や変更権限などを設定する方法で制御を行うのが一般的。

パーミションの話?
違う。アクセス制御はパスワード認証などを用いて機能を利用する人を制御する話っぽい。

認可制御とは、Wikipedia先生より。

利用者のアクセス要求を受け入れるか拒否するかを決定する

こっちが(おそらく)パーミッションの話。

安全なウェブサイトの作り方より。

ウェブサイトにアクセス制御機能を実装して、利用者本人にのみデータの閲覧や変更等の操作を許可する際、複数の利用者の存在を想定する場合には、どの利用者にどの操作を許可するかを制御する、認可(Authorization)制御の実装が必要となる場合があります。

多分Wikipediaと安全なウェブサイトの作り方のアクセス制御は違う気がする。
Wikipediaのアクセス制御は、安全なウェブサイトの作り方の認可制御の欠落な気がする。

2.アクセス制御や認可制御の欠落の対策

アクセス制御の対策

はじめにアクセス制御の対策について。

アクセス制御機能による防御措置が必要とされるウェブサイトには、パスワード等の秘密情報の入力を必要とする認証機能を設ける

たとえば、個人情報を閲覧する機能にアクセスするにあたり、メールアドレスのみでログインできてしまうウェブサイトが、脆弱なウェブサイトとして届出を受けた例があります。一般に、メールアドレスは他人にも知られ得る情報であり、そのような情報の入力だけで個人情報を閲覧できてしまうのは、アクセス制御機能が欠落していると言えます。

認証機能っていうのはログイン機能のこでいいよね。
適切なアクセス制御を行なうにはユーザ管理を行なわないと。

認可制御の欠落の対策

認可制御について。認証だけで済ませないように!

認証機能に加えて認可制御の処理を実装し、ログイン中の利用者が他人になりすましてアクセスできないようにする

ウェブサイトにアクセス制御機能を実装して、利用者本人にのみデータの閲覧や変更等の操作を許可する際、複数の利用者の存在を想定する場合には、どの利用者にどの操作を許可するかを制御する、認可(Authorization)制御の実装が必要となる場合があります。

認証と認可は混同しやすい。

認証とは、ユーザを一意に特定すること。
認可とは、認証済みユーザに対して、サービスの利用やリソースへのアクセスを行なえる権限を与えること。

参考

安全なウェブサイトの作り方

コメント

タイトルとURLをコピーしました