Webアプリケーション

安全なウェブサイトの作り方~失敗例~

安全なウェブサイトの作り方を読んだので、理解した内容を自分なりにまとめておきます。資料 上記は3章構成になっていてそれぞれ長めの内容なので、ここでは3章の『失敗例』について、Ruby on Rails ではどうするかについてをまとめます。 SQL インジェクシ…

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

安全なウェブサイトの作り方を読んだので、理解した内容を自分なりにまとめておきます。資料 上記は3章構成になっていてそれぞれ長めの内容なので、ここでは2章の『ウェブサイトの安全性向上のための取り組み』の Web サーバの運用に関する対策や、Web サイ…

Ruby on Rails:devise gem で認証機能を導入する

devise gem 概要 devise gem の導入 ビュー構成変更 Strong Parameter設定 ユーザ一覧ページの追加 ユーザ詳細ページの追加 参考 devise gem 概要 devise は Warden に基づく Rails 用の柔軟な認証ソリューション。パスワードはハッシュしてデータベースに保…

PostgreSQL:データベースアカウントに適切な権限を与える

SQLインジェクションの対策として、根本的なものとしては、プレースホルダの方で対応するのが最善。(参考:安全なウェブサイトの作り方 - 1.1 SQLインジェクション) 今回は、保険的な対策の『データベースアカウントに適切な権限を与える』に取り組んだ。 …

SQLインジェクション攻撃とは

SQLインジェクション攻撃とは 発生しうる脅威 注意すべきページの特徴 根本的な解決方法 SQL文の組み立ては全てプレースホルダで実装する なぜ『文字列連結処理』が安全でないのか 『動的プレースホルダ』の使用時には注意が必要 SQL文のリテラルを正しく…

XSS対策:サニタイジング(エスケープ)処理

XSSの具体例 エスケープ処理は出力要素に対して行う なんでエスケープ処理は出力要素? XSSの具体例 とりあえず現状の自分のサイトに対して、悪意あるコンテンツを作成してみた。下記コードを入れると、悪意あるコンテンツが作成される。 他サイトへリダイレ…

XSSとは

発生しうる脅威 XSSの種類 注意すべきページの特徴 対策の種類 HTMLテキストの入力を許可しない場合の対策 HTMLテキストの入力を許可する場合の対策 全てのウェブアプリケーションに共通の対策 参考サイト XSSはクロスサイトスクリプティング(Cross Site Sc…

Sinatra:erbファイルはrubyコードが書ける

少しずつerbファイルの書き方がわかってきた😅どうやら、<% %>で括った部分がruby コードと判定され、変数については<%= %>で括ってあげると認識されるっぽい。 それ以外の部分についてはhtmlとして扱われる。 例えば、下にerbのコード例を示す。 <% require '…

Sinatra:PRGパターンを実装してみた

Sinatraのサーバ部分はruby、Webページはhtmlというハイブリッド型? Sinatraの構成にまだ慣れていなくて、『どう書けばいいねん‍』て感じでしたが、とりあえず手を動かしてみるとだんだん見えてきました 自分の感覚的には、『サーバっぽい部分をrubyで処理…

PRGパターンとは

PRGは、Post/Redirect/Getの略で、フォーム送信後に表示されるページを再読み込み、共有、ブックマークしても、再度フォームを送信するなどの悪影響がないようにするためのウェブ開発デザインパターンのことらしい。 例えば、herokuのサンプルページ(New Ar…

Webを支える技術:リソース設計とは

リソース設計のアプローチ(読み取り専用) Webサービスで提供するデータを特定する データをリソースに分ける リソースにURIで名前をつける クライアントに提供するリソースの表現を設計する リンクとフォームを利用してリソース同士を結びつける イベント…

Webを支える技術:HTTP概要

HTTPメソッド概要 8つのメソッド べき等性と安全性 ステータスコード HTTPでの認証 キャッシュ用ヘッダ 参考 HTTPメソッド概要 8つのメソッド メソッド名 役割 GET リソースの取得 POST ・子リソースの作成・リソースへのデータ追加・そのほかの処理 PUT ・…

Webを支える技術:URI設計のポイント

URIを変わりにくくする プログラミング言語に依存した拡張子やパスを含めない メソッド名やセッションIDを含めない URIリソースは表現を名詞にする リダイレクトとは URI設計のテクニック 拡張子で表現を指定する マトリクスURI 参考 URIを変わりにくくする …

Webを支える技術:URI概要

URIとは URIの構文 URIで使える文字 URI実装での注意点 参考 URIとは URI(Uniform Resource Identifier)は、英語の意味の通り『リソースを統一的に識別するID』のこと。URIを使うことで、Web上に存在するすべてのリソースを一意に示せる。 URIは、URL(Uni…

Webを支える技術:REST概要

HTTP、URI、HTMLの関係 アーキテクチャスタイルとデザインパターン リソースとは RESTの構成 参考 HTTP、URI、HTMLの関係 Webを支える基本的な技術のHTTP、URI、HTMLの関係は下図のようになる。今までそこまで意識していなかったので、この関係図は『確かに…

RESTとは

RESTとは RESTの特徴 REST API設計の勘どころ HTTP API Design 参考 RESTとは 最近Web系を学んでいると、目にすることが多くなった『REST』ですが、これまでは『休憩?残り?』とかイメージしていましたが、ようやく出会えました と、そんなことは置いておい…