Soumettre la recherche
Mettre en ligne
ネットワーク第7回
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
898 vues
Yukiko Kato
Suivre
Javaで学ぶWebセキュリティ(準備編)
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 32
Télécharger maintenant
Recommandé
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
MogileFSの利用と高速化
MogileFSの利用と高速化
kan
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
Burp Suite Japan User Group
ネットワーク第3回目
ネットワーク第3回目
Yukiko Kato
Boost Tour 1.53.0
Boost Tour 1.53.0
Akira Takahashi
HTTP入門
HTTP入門
Sota Sugiura
JSON Based Web Services
JSON Based Web Services
Toru Yamaguchi
Creately and Glogster
Creately and Glogster
marisrl
Recommandé
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
MogileFSの利用と高速化
MogileFSの利用と高速化
kan
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
Burp Suite Japan User Group
ネットワーク第3回目
ネットワーク第3回目
Yukiko Kato
Boost Tour 1.53.0
Boost Tour 1.53.0
Akira Takahashi
HTTP入門
HTTP入門
Sota Sugiura
JSON Based Web Services
JSON Based Web Services
Toru Yamaguchi
Creately and Glogster
Creately and Glogster
marisrl
Pg open day slides
Pg open day slides
Je De
Reading project Aj.Emilyn
Reading project Aj.Emilyn
Khon Kaen University
[PS11]ネットワーク第6回
[PS11]ネットワーク第6回
Yukiko Kato
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
komal890
6161103 5.2 free body diagrams
6161103 5.2 free body diagrams
etcenterrbru
[PS11]ネットワーク第5回
[PS11]ネットワーク第5回
Yukiko Kato
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】
Yukiko Kato
Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】
Yukiko Kato
Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】
Yukiko Kato
ネットワーク第9回
ネットワーク第9回
Yukiko Kato
Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】
Yukiko Kato
ネットワーク第8回目
ネットワーク第8回目
Yukiko Kato
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
Yukiko Kato
Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】
Yukiko Kato
ネットワーク第6回
ネットワーク第6回
Yukiko Kato
ネットワーク第5回
ネットワーク第5回
Yukiko Kato
Javaプログラミング入門【第5回】
Javaプログラミング入門【第5回】
Yukiko Kato
[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回
Yukiko Kato
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】
Yukiko Kato
ネットワーク第4回目
ネットワーク第4回目
Yukiko Kato
Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】
Yukiko Kato
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
Yukiko Kato
Contenu connexe
En vedette
Pg open day slides
Pg open day slides
Je De
Reading project Aj.Emilyn
Reading project Aj.Emilyn
Khon Kaen University
[PS11]ネットワーク第6回
[PS11]ネットワーク第6回
Yukiko Kato
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
komal890
6161103 5.2 free body diagrams
6161103 5.2 free body diagrams
etcenterrbru
[PS11]ネットワーク第5回
[PS11]ネットワーク第5回
Yukiko Kato
En vedette
(6)
Pg open day slides
Pg open day slides
Reading project Aj.Emilyn
Reading project Aj.Emilyn
[PS11]ネットワーク第6回
[PS11]ネットワーク第6回
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
QCL_14_v3_[pareto diagrams]_[banasthali vidyapith]_[komal sharma]
6161103 5.2 free body diagrams
6161103 5.2 free body diagrams
[PS11]ネットワーク第5回
[PS11]ネットワーク第5回
Plus de Yukiko Kato
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】
Yukiko Kato
Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】
Yukiko Kato
Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】
Yukiko Kato
ネットワーク第9回
ネットワーク第9回
Yukiko Kato
Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】
Yukiko Kato
ネットワーク第8回目
ネットワーク第8回目
Yukiko Kato
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
Yukiko Kato
Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】
Yukiko Kato
ネットワーク第6回
ネットワーク第6回
Yukiko Kato
ネットワーク第5回
ネットワーク第5回
Yukiko Kato
Javaプログラミング入門【第5回】
Javaプログラミング入門【第5回】
Yukiko Kato
[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回
Yukiko Kato
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】
Yukiko Kato
ネットワーク第4回目
ネットワーク第4回目
Yukiko Kato
Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】
Yukiko Kato
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
Yukiko Kato
HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)
Yukiko Kato
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
Yukiko Kato
ネットワーク第2回目
ネットワーク第2回目
Yukiko Kato
【AWS】EC2インスタンスでWebサーバ起動(for Mac)
【AWS】EC2インスタンスでWebサーバ起動(for Mac)
Yukiko Kato
Plus de Yukiko Kato
(20)
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】
Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】
ネットワーク第9回
ネットワーク第9回
Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】
ネットワーク第8回目
ネットワーク第8回目
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】
ネットワーク第6回
ネットワーク第6回
ネットワーク第5回
ネットワーク第5回
Javaプログラミング入門【第5回】
Javaプログラミング入門【第5回】
[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】
ネットワーク第4回目
ネットワーク第4回目
Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
ネットワーク第2回目
ネットワーク第2回目
【AWS】EC2インスタンスでWebサーバ起動(for Mac)
【AWS】EC2インスタンスでWebサーバ起動(for Mac)
ネットワーク第7回
1.
Webセキュリティの基礎
2.
Herokuプロジェクトを使用してセッ ション管理の仕組みを実践
3.
ステータスライン レスポンスヘッダ ヘッダ名 : ヘッダ値 ・ ・ 空行(CRLF) レスポンスボディ(HTMLなど)
4.
HTTP/1.1 200 OK Server:
Jetty(7.6.0.v20120127) Connection: keep-alive Content-Length: 692 Content-type:text/plain
5.
番号 意味 200 OK(成功) 302 Found (リダイレクト) 304 Not Modified
(キャッシュを参照) 400 Bad Request (Clientからのリクエスト不備) 403 Forbidden (アクセス禁止) 404 Not Found (ページが存在しない) 500 Internal Server Error (サーバエラー) 503 Service Unavailable (サーバが過負荷状態)
6.
Content-Length ボディのバイト数
Content-Type MIMEタイプというリソースの種類を 指定 セミコロン(;)を付けてcharset=UTF-8と 記述すれば、UTF-8という文字エン コーディングであることを示す MIMEタイプ 意味 text/plain テキスト text/html HTML文書 application/xml XML文書 text/css CSS文書 image/gif GIF画像 image/jpeg JPEG画像 image/png PNG画像 application/json JSON(Javascript Object Notation)
7.
リクエストライン(メソッド URI プロトコル) リクエストヘッダ ヘッダ名 : ヘッダ値 ・ ・ 空行(CRLF) メッセージボディ(POSTの場合はここにクエリが入る)
8.
http://httpserverex.herokuapp.co m/ (各個人のHerokuアプリケー ションのURL)にアクセスするテ キストボックスに日本語で入力 して送信ボタンを押す
9.
POST /hello HTTP/1.1 Host:
httpserverex.herokuapp.com Connection: keep-alive Content-Length: 77 Content-Type: application/x-www-form-urlencoded Referer: http://httpserverex.herokuapp.com/Cookie: JSESSIONID=1ut4gy3t4kqu1mncf3ykldj5a メッセージボディ input=%E3%81%82%E3%81%84%E3%81%88%E3%81%86%E3%81%8A&submit=% E9%80%81%E4%BF%A1
10.
Content-Length ボディのバイト数
Content-Type 送信する値のMIMEタイプ特にformで 指定がなければ『application/x-wwwform-urlencoded』になる 名前=値を『&』でつないだデータ形 式
11.
特殊記号や日本語などURLに使 用できない文字をURL上に記述 する場合に用いる 対象の文字をバイト単位で 『%xx』という形式で表す。(xx は16進数※UTF8の場合)
URL エンコード/デコードフォー ム http://home.kendomo.net/board/decode / ※半角スペースは『%20』になる が、Content-Typeが『application/xwww-form-urlencoded』の場合は、 特別扱いして『+(半角)』になる
12.
リンク元のURLを示すヘッダ Refererヘッダはセキュリティの 役に立つこともあれば、問題に なることもある メリット:Refererヘッダは、ア プリケーションが意図した遷移 を経ていることを確認すること ができるが、アクセスしている 本人によってツールやブラウザ のプラグインで改変、削除され ることもある
デメリット:URLに秘密情報を 含んでいる場合は、セキュリ ティ上問題になる
13.
RFC2616より GETメソッドは参照(リソースの取得) のみに用いる
GETメソッドは副作用がないことが期 待される 秘密情報の送信にはPOSTメソッドを用 いること
14.
リソース(コンテンツ)の取得以 外のこと →サーバ側でのデータの追加・更 新・削除が起きる作用のこと 典型的な例:物品の購入、利用 者の登録・削除などの処理
更新系の画面ではPOSTメソッド を使わなければならない
15.
GETメソッドは、URLにクエリー の文字列の形でパラメータを渡 すが、ブラウザやサーバが処理 出来るURLの長さには上限があ る。 データ量が多い場合は、POSTメ ソッドを使う方が安全
16.
GETメソッドの場合は、以下の 可能性があるため URL上に指定されたパラメータが Referer経由で外部に漏洩する
URL上に指定されたパラメータがアク セスログに残る
17.
以下が1つでも当てはまる場合 にPOSTメソッドを使うべき データ更新など副作用に伴うリクエス トの場合
秘密情報を送信する場合 送信するデータの総量が多い場合
18.
index.jspのbodyタグの中を以下に書き換える <form action="/confirm"
method="POST"> 氏名<input type="text" name="name"><br> メールアドレス<input type="text" name="mail"><br> 性別<input type="radio" name="gender" value="女">女 <input type="radio" name="gender" value="男">男<br> <input type="submit" name="submit" value="送信"> </form>
19.
index.jspと同じ階層に『confirm.jsp』を新規ファイルで作成し、 以下の内容を記述 <%@ page
contentType="text/html;charset=UTF-8" %> <html> <head> <title>確認</title> </head> <body> <form action="/ok" method="post"> 氏名:<%=request.getParameter("name")%><br> メールアドレス:<%=request.getParameter("mail")%><br> 性別:<%=request.getParameter("gender")%><br> <input type="hidden" name="name" value="<%=request.getParameter("name")%>"> <input type="hidden" name="mail" value="<%=request.getParameter("mail")%>"> <input type="hidden" name="gender" value="<%=request.getParameter("gender")%>"> <input type="submit" value="登録"> </form> </body> </html>
20.
index.jspと同じ階層に『ok.jsp』を新規ファイルで作 成し、以下の内容を記述 <%@ page
contentType="text/html;charset=UTF-8" %> <html> <head> <title>登録完了</title> </head> <body> 氏名:<%=request.getParameter("name")%><br> メールアドレス: <%=request.getParameter("mail")%><br> 性別:<%=request.getParameter("gender")%><br> 登録されました。 </body> </html>
21.
『src/com.example』パッケージの中に『ConfirmServlet.java』を新規作成し、 以下を記述する public class
ConfirmServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/confirm.jsp").forward(req, resp); } }
22.
『src/com.example』パッケージの中に『OKServlet.java』を新規作成し、以下 を記述する public class
OKServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("/ok.jsp").forward(req, resp); } }
23.
web.xmlにマッピングを追加(<web-app>タグの中に記述) <servlet> <servlet-name>confirm</servlet-name> <servlet-class>com.example.ConfirmServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>confirm</servlet-name> <url-pattern>/confirm</url-pattern> </servlet-mapping> <servlet> <servlet-name>ok</servlet-name> <servlet-class>com.example.OKServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ok</servlet-name> <url-pattern>/ok</url-pattern> </servlet-mapping>
24.
http://localhost:8080/ にアクセス し、項目を入力してボタンをク リック
25.
先ほど作った入力フォームの確 認ボタンをクリックした後に、 ブラウザバックで戻って、ソー スを確認する Chromeの場合は、HTMLの中の 要素を変更出来るので、hidden 項目のvalueを変更して、ボタン をクリックすると、次画面で入 力された値と変更されているこ とがわかる
26.
HTTPは、クライアントの現在の 状態を覚えておく設計になって いる この性質をHTTPのステートレス 性と言う
ラベル表示では、現在の状態を 覚えておくのが出来ないため、 通常はhiddenパラメータに値を 覚えさせておく
27.
ブラウザのプラグインやプロキ シツールなどで本来変更があっ てはならない値が変更されてい た このhiddenパラメータの処理す る部分に脆弱性がある
つまり、攻撃対象となる
28.
客:登録したいんだけど 店員:氏名、メールアドレス、性別(男または女)をお願いします 客:氏名は山田太郎、メールアドレスはtarou@example.jp、性別は男です 店員:復唱します。氏名は山田太郎、メールアドレスはtarou@example.jp、 性別は男、確認お願いします。 客:氏名は山田花子、メールアドレスはhanako@example.com、性別は女で す。登録よろしくお願いします。 店員:氏名は山田花子、メールアドレスはhanako@example.com、 性別は女で登録しました。
29.
利用者自身からは書き換えが可 能だが、情報漏えいや第三者か らの書き換えに対しては堅牢で ある hiddenパラメータと比較する対 象には、クッキーやセッション 変数がある
クッキーやセッション変数の欠 点として、セッションIDの固定 攻撃に弱いことがあげられる 特に、ログイン前の状態でかつ 地域性型ドメインを使っている 場合には、クッキーモンスター 問題の影響により、セッション 変数の漏洩に対する効果的な対 策がない 利用者自身によって書き換えら れては困る認証や認可に関する 情報はセッション変数に保存す べきだが、それ以外はhiddenパ ラメータを使用する
30.
ECサイトの『買い物カゴに入れ る』 アプリケーションの状態を覚え ておくことを『セッション管 理』と言う
31.
セッション管理をHTTPで実現す る目的の仕組み サーバ側からブラウザに対して、 『名前=変数』の組を覚えてお くように指示する
32.
安全なWebアプリケーションの 作り方-脆弱性が生まれる原理と 対策の実践- 徳丸浩著
Télécharger maintenant