• 検索結果がありません。

HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2

N/A
N/A
Protected

Academic year: 2021

シェア "HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

データベースシステム特論

(2)

HTTP

プロトコル

• Web

サーバと

Web

クライアント間のプロトコル

RFC2616

HTTP/1.1

が規定されている

• Web

サーバシステム

Apache

Tomcat (Servlet

コンテナ

)

ここでは,

XML

データベースの

Xindice

を用いるた

め,

Tomcat

を利用する.

(3)

HTTP

プロトコル

(

続き

)

リクエスト

(

クライアントからサーバへの要求

)

メソッド

(GET, POST

)

リクエストヘッダ

(Host

)

どのようなリクエストヘッダを送っているのかは,

Tomcat

Servlet Examples / Request Headers

のページで確認できる

レスポンス

(

サーバからクライアントへの応答

)

ステータスコード

(200, 404

)

(4)

Web

プログラミング

サーバサイド

CGI : Perl

等の言語.リクエスト毎に新しいプロ

セス.

Servlet : Java

言語.リクエスト毎に新しいスレ

ッド.

クライアントサイド

JavaScript, Java Applet, Flash

サーバ・クライアント連携

Ajax

(5)

HTTP

プロトコルの詳細

Tomcat

を用いた,

HTTP

プロトコルの詳細につい

ての実習

• GET

メソッド

• POST

メソッド

• HTTP/1.1

プロトコル

• Cookie

アクセス制限

ユーザ認証

(6)

GET

メソッド

Servlet Examples / Hello World

へのアクセス

$ telnet localhost 8080 GET /servlets-examples/servlet/HelloWorldExample HTTP/1.0 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Content-Length: 359

Date: Tue, 10 May 2005 15:17:23 GMT Connection: close <html> <head> <title>Hello World!</title> </head> <body bgcolor="white"> ... <h1>Hello World!</h1> </body> </html>

(7)

GET

メソッド

(

続き

)

JSP Examples / JSP 2.0 Examples / Functions

への

アクセス

• ?

以降の

foo=JSP+2.0

がサーバに渡すパラメータ部分

$ telnet localhost 8080 GET /jsp-examples/jsp2/el/functions.jsp?foo=JSP+2.0 HTTP/1.0 HTTP/1.1 200 OK Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=B80F0DBAA37E4A36A4BB043C3B0A69D8; Path=/jsp-examples Content-Type: text/html;charset=ISO-8859-1

Content-Length: 1803

Date: Tue, 10 May 2005 15:33:48 GMT Connection: close

.... <html>

<head>

<title>JSP 2.0 Expression Language - Functions</title> ...

(8)

POST

メソッド

Servlet Examples / Request Parameters

へのアクセス

• Content-Type, Content-Length

でサーバに渡すパラ

メータの情報を指定し,改行の後にパラメータを記述

$ telnet localhost 8080 POST /servlets-examples/servlet/RequestParamExample HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 24 firstname=ab&lastname=cd HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=ISO-8859-1 Content-Length: 675

Date: Tue, 10 May 2005 14:53:00 GMT Connection: close

<html> ... </html>

(9)

HTTP/1.1

プロトコル

$ telnet localhost 8080

GET /servlets-examples/servlet/HelloWorldExample HTTP/1.1

Host: localhost:8080 <-- アクセス先のサーバ名を指定 (HTTP/1.1 で必須)

Connection: close <-- 接続を維持せずにすぐに切断 (通常は Keep-Alive) HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/html;charset=ISO-8859-1 Content-Length: 359

Date: Tue, 10 May 2005 15:17:23 GMT Connection: close <html> <head> <title>Hello World!</title> </head> <body bgcolor="white"> ... <h1>Hello World!</h1> </body> </html>

(10)

GET

メソッドのフォーム

<form method="GET"

action="http://localhost:8080/jsp-examples/jsp2/el/functions.jsp"> foo <input type="text" name="foo">

<input type="submit" value="Submit"> </form>

上のフォームを

Web

ブラウザで表示し,テキストフィー

ルドに

“JSP 2.0”

を入力して

Submit

ボタンを押すと以

下のようなリクエストが送られる

GET /jsp-examples/jsp2/el/functions.jsp?foo=JSP+2.0 HTTP/1.1 Host: localhost:8080 ...

(11)

POST

メソッドのフォーム

<form method="POST"

action="http://localhost:8080/servlets-examples/servlet/RequestParamExample"> firstname <input type="text" name="firstname">

lastname <input type="text" name="lastname"> <input type="submit" value="Submit">

</form>

上のフォームを

Web

ブラウザで表示し,テキストフィー

ルドに

“ab”, “cd”

を入力して

Submit

ボタンを押すと以

下のようなリクエストが送られる

POST /servlets-examples/servlet/RequestParamExample HTTP/1.1 Host: localhost:8080 ... Content-Type: application/x-www-form-urlencoded Content-Length: 24 firstname=ab&lastname=cd ...

(12)

Cookie

• Web

サーバの生成した情報を

Web

ブラウザに一時的

に保存させる仕組

(RFC2109, RFC2965

で規定

)

Cookie

毎に最大

4KB

のデータ,サーバ毎に最大

20

個の

Cookie

を保存できる

• Cookie

処理の流れ

(1)

ブラウザからサーバにアクセス要求

(2)

サーバは,レスポンスヘッダ中に

Set-Cookie

ヘッ

ダとして

Cookie

情報を送信

(3)

ブラウザは

Cookie

情報を保存

(

ブラウザの設定等

により保存しないことも可能

)

(4)

ブラウザから同一サーバ

(

あるいは同一ドメイン

)

の再アクセス時に,保存した

Cookie

情報を

Cookie

ヘッダとしてリクエストヘッダに含めて送信

(13)

Cookie (

続き

)

• Set-Cookie

レスポンスヘッダ

NAME=VALUE : Cookie

名と値

expires : Cookie

の有効期限

(

指定がない場合は,そのセッション中,すなわち

ブラウザを閉じるまで

)

domain : Cookie

を利用するドメインの指定

path : Cookie

を利用するパスの指定

secure : https

利用時のみの利用かどうか

• Cookie

リクエストヘッダ

NAME=VALUE :

これまで保存してある

Cookie

情報

(14)

アクセス制限

• Apache

では,

httpd.conf

設定ファイルや各ディレク

トリ中の

.htaccess

ファイル等でホスト名や

IP

アドレ

スによるアクセス制限が可能

Order deny,allow Deny from all

Allow from 133.30 Allow from 150.84

• Tomcat

では,

server.xml

設定ファイルや各サーブレッ

トの

context.xml

ファイルでホスト名や

IP

アドレス

によるアクセス制限が可能

<Context path="/xindice" docBase="xindice" debug="0" reloadable="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValve"

allow="^127\.0\.0\.1$"/> </Context>

(15)

ユーザ認証

• HTTP

の標準的なユーザ認証方式としては

Basic

証と

Digest

認証がある

(RFC2617)

Basic

認証

の特徴

HTTP

で広く普及している認証方式

ID

とパスワードが平文

(BASE64)

で流れるため,

パケットを盗聴されると危険

SSL (https)

と併用すれば安全

Digest

認証

の特徴

チャレンジレスポンス型の認証

一方通行関数を用いてハッシュ値化を行った結果が

流れるため,パスワードを推測することは困難

古い

Web

ブラウザでは未対応

(16)

Basic

認証

サーバは,ユーザ認証が必要なページへのアクセス要

求があれば,

WWW-Authenticate

ヘッダをレスポン

スヘッダに含めて送信

WWW-Authenticate: Basic realm="

認証範囲名

"

ブラウザは,

ID

とパスワードの入力をユーザに要求

ブラウザは,

ID

とパスワードを

BASE64

エンコーディ

ングしたものを

Authorization

ヘッダとして含めて再

要求

サーバは,認証に成功すれば,

Web

ページを送信

ブラウザは,同一サーバのより深いパスへのアクセス

要求については,常に同一

Authorization

ヘッダを追

加して送信する

(17)

Digest

認証

サーバは,ユーザ認証が必要なページへのアクセス要

求があれば,

WWW-Authenticate

ヘッダをレスポン

スヘッダに含めて送信.

WWW-Authenticate

ヘッダ

にはサーバの生成した乱数値

(nonce

)

も含める

ブラウザは,

ID

とパスワードの入力をユーザに要求

ブ ラ ウ ザ は ,乱 数 値

(cnonce)

を 生 成 し ,

nonce,

cnonce,

パスワード等を含めた文字列を

MD5

等で

ハッシュ化する

ブラウザは,

cnonce,

ハッシュ値等を

Authorization

ヘッダとして含めて再要求

サーバも独自に,

nonce, cnonce,

パスワード等を含め

た文字列を同一アルゴリズムでハッシュ化し,ブラウ

ザからのものと一致すれば認証成功として,

Web

ペー

ジを送信する

(18)

セキュリティホールへの対処

• REFERER

によるアクセス制限は意味がない

REFERER

はリンク元の

URI

を表すが,クライア

ントが自由に設定できる情報なので,

REFERER

を信用してはいけない

パラメータのチェック

パラメータもクライアントが自由に設定できる情報

なので,信用してはいけない

渡されたパラメータをそのまま外部コマンドの引数

やファイル名に用いるのは非常に危険

渡されたパラメータをそのまま

HTML

ファイル中

に表示すると,

XSS (

クロスサイトスクリプティン

)

のホールが生じる.タグの無効化等のサニタイ

ジングが必要

(19)

練習問題

• Tomcat

のインストール

• Web

サーバへの

telnet

での接続実験

アクセス制限,ユーザ認証の実験

参照

関連したドキュメント

ROKU KYOTO Autumn Parfait ~ Shine muscat &amp; Jasmine tea ~ ROKU KYOTO

(4) 現地参加者からの質問は、従来通り講演会場内設置のマイクを使用した音声による質問となり ます。WEB 参加者からの質問は、Zoom

Webカメラ とスピーカー 、若しくはイヤホン

特に LUNA 、教学 Web

[r]

Digital media has had a profound impact on human behavior.. Nevertheless, articles about digital media have focused on the power of the technology rather than the impact it has had on

情報 システム Web サービス https://webmail.kwansei.ac.jp/ (https → s が 必要 ).. メール

教職員用 平均点 保護者用 平均点 生徒用 平均点.