CSRF対策

CSRF対策とは

CSRF (Cross-Site Request Forgeries) を意訳すると 「サイトを跨ぐ偽造リクエスト送信」 です。サイトをまたぐ偽造リクエスト送信

罠サイトを踏んだ結果,自分が無関係な別のサイト上で勝手にアクションをさせられる攻撃です。

 

偽造した送信などを防ぐ

同一オリジンポリシーについて知っておく

 

【参照】

今さら振り返る CSRF 対策と同一オリジンポリシーの基礎

 

 

オリジンとは何か?

CSRF を語るにあたって避けられないのが Origin(オリジン) という用語です。

自分のサイトか無関係な別のサイトかを判定するために,以下の要素を組み合わせたものが使用されます。

 

例: https://example.com:443

 

スキーム・・・https
ホスト・・・example.com
ポート・・・443

 

省略された場合,HTTPSの場合は443,HTTPの場合は80が既定値になります。

 

これらをまとめて Origin(オリジン) と言います。

 

これらの成分が一致している場合は同じサイトになります。1つでも異なる場合は別のサイトとになります。

 

同一オリジンポリシーとは何か?

Web ブラウザは,異なるオリジン間で好き勝手リクエストを飛ばされては困ります。

そこで 同一オリジンポリシー (Same-Origin Policy) の規定があります。

 

異なるオリジンへの書き込みは、概して許可されます。

例えばリンクやリダイレクト、フォームの送信があります。まれに使用される HTTP リクエストの際はプリフライトが必要です。


異なるオリジンの埋め込みは、概して許可されます。

異なるオリジンからの読み込みは一般に許可されませんが、埋込みによって読み取り権限がしばしば漏れてしまいます。

 

埋込み画像の幅や高さ、埋込みスクリプトの動作内容、埋込みリソースでアクセス可能なものを読み取ることができます。

という事のようです。

 

 

異なるオリジンの Web サイトに対し,HTTP リクエストは送ることはできる

しかし、その結果の読み取りはできない。

 

ということが書かれています。

 

【参照】

オリジンの定義について >>

 

 

CSRF 対策は何を守ればいいのか?

「ブサーバーからの結果を「読み取る」」部分は Web ブラウザが守ってくれます。

CSRF 対策で守られないのは,「HTTP リクエストを送る」の部分です。

 

出典:csrf対策

 

問題があるのは、「掲示板に記事を投稿」「パスワードを変更」「データベース上に書き込みをする時」、「メール送信する時」です。

 

送る部分を守れ

サーバーからのリクエスと部分はブラウザが守ってくれる

 

 

トークンによる対策方法

対策方法は複数あります。セッションを利用して、トークンを発行するのがおすすめです。

 

トークンを発行する

 

 

固定トークン(ログイン完了後ずっと固定値になる)
ワンタイムトークン(1回の送信ごとに変更されていく)

 

の二種類があります。

 

推測不可能という条件のみを満たしていれば十分なので,ワンタイムである必要性はありません。

ワンタイムだとページリロードでの重複送信を防ぐこともできますが,これが逆に不便になることもあります。

CSRF トークンの責務を超えた制御になってくるので,著者個人としては「固定トークン」を推奨しています。

 

【参照】

パーフェクト方式のCSRF対策は現在時刻を元にしているので、ハッシュ関数を通しても、内部の「種」の文字列を推測される危険性があります。

https://blog.tokumaru.org/2011/01/anti-csrf-onetime-token-failure-case.html

 

固定トークンの場合

1. ランダム文字列を生成してセッションに格納し,繰り返して使う

2. セッション ID のハッシュ値を使う

3. セッション ID をそのまま使う (非推奨)

 

の3つの方法があります

 

PHP の Laravel フレームワークではランダム文字列生成が採用されています

セッション ID のハッシュ値でも十分かな,という意見です。

しかし、セッション ID をそのまま使用するのは,XSS 脆弱性から即セッションハイジャックを受けるなどの二次被害にも繋がります。

万が一の保険としてハッシュ関数を通しておくことを推奨します。

 

ハッシュ値とは

ハッシュ値とは、セッションでよく使います。

 

ハッシュ関数の「戻り値」

元データに対して生成された、適当な値(適当に見える値)

 

ハッシュ関数とは?

「適当な値を中に放り込むと、適当な値を返してくれる関数」の事です。

 

適当な値が返ってくる
同じ入力に対しては同じ値が返ってくる

 

という特徴があります。

 

1.ハッシュ値から元のデータを特定するのは、ほとんど無理

2.元のデータが同じなら生成されるハッシュ値も同じ

3.元のデータが変わると生成されるハッシュ値は(ガッツリと)変わる

 

「元データ→ハッシュ値」はお手軽だけど「元データ←ハッシュ値」はすっごい大変だよ

 

【参照】

ハッシュ関数とは >>

 

PHPの勉強方法

目安は1日3~5時間の勉強で100日程度です。実際にやってみましたが、仕事をしながらだと、200日ほどかかります。なぜなら、休日の家族サービス。モチベーションの低下などがあるからです。

前置きはさておき、まずは勉強方法です。

 

 

PHPを学ぶには、独自の言葉を覚える必要があります。「・」が付いているものは、外部のサイトへ飛びます。

 

■ 基本編 ■

PHPとは?

設定方法

PDOとは何か?

mysql_connect()

postを使ってみよう

コンストラクタとは?

-> アロー演算子とは?

データベースへのアクセスについて

セッションとは

ファイルのアップローダー

CSRF対策

二重投稿の禁止

ハッシュ値とは?

 

■ DBへの接続■

管理者権限について

PDOについて知ろう

PDOを使ってMYSQLに接続しよう

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

■ オブジェクト指向■

クラス・インスタンス・プロパティ

オブジェクト指向とは?

 

 

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザー

 

 

MYSQLについて

MYSQLの学習方法について。DBの操作方法を覚えます。 四大操作をまずは覚えておきましょう。

 

■ 基本編 ■

MYSQLとは?

CURDについて

更新について

削除について

アップデートについて

 

フェッチするとは?

 

■ 設計について■

UMLとは何か?

ER図を覚えよう

 

 

 

 

コードイグナイターの勉強方法

 

コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。

 

DB設定 ⇒ 接続 ⇒ SQLクエリ ⇒ DB暮クラスの機能 ⇒ 結果の取得 の順に学ぶとよい。

http://www.ci-guide.info/db/

 

SQLのクエリ発行には2種類がある。通常方法と、「Acive Record」の2種類です。

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

 

【参照】

http://www.ci-guide.info/

http://pneskin2.nekoget.com/codeigniter/3/user_guide/index.html

どちらかを見ましょう。

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。

 

 

勉強に必要な書籍について

必ず、最新のverを買うようにしてください。PHPはバージョンによって、かなり違います。PHP、MYSQL、、サーバー、フレームワークと幅広く勉強する必要があります。

 

本はかならず、2冊用意するようにしましょう。1冊は基本、もう1冊は分からない部分を補完してくれます。

ちなみに、無名関数、コールバック関数などは、何度勉強してもつまずく可能性があります。

 

PHPサーバーサイドプログラミング

基本から詳しく書いてあるが、ところどころ、省略されていて分かりずらい。

パーフェクトPHP

ある程度、分かってから使うとよい

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

プログラムはなぜ動くのか?

パソコンが動く、原理と基本がわかります

ここが分かると、配列、ポインタなどが分かります

体型的に学ぶ完全なwebアプリケーションの作り方

XSSなどの基本的なセキュリティー対策が分かります。

 

【MYSQLについて】

データベースについて学びます。「SELECT」を極めましょう。型の指定方法などが学べます。

 

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

達人に学ぶdb設計 徹底指南書

基本が終わったら、必ず読みましょう。

 

【サーバーについて】

サーバー、ファイル権限について学びます。

 

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

 

【DB設計について】

DBの設計方法について学ぶことができます。

 

楽々ERDレッスン

DBの設計に必要

UML入門

基本について学んでおくとよい

 

 

参照サイト

オブジェクト指向とは?

PDOとは何か?

mysql_connect()

アロー演算子とは?

データベースへのアクセスについて

 

大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします

 

 

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に知っておきたいマーケティング

についてご紹介いたします。

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか

についてご紹介させていただきます。

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておくことも大事です。

キーワードを上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は

そんな大きなキーワードで対策をしてはいけません。

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター