サーバー攻撃の基本

サーバーセキュリティーの基本

今回は、サーバーセキュリティーの基本について、私が学んだことをまとめておきます。少しでも後学のために使っていただけたら嬉しいです。

 


 

Q.なぜ学ぶのか?

・情報の漏洩になってしまう。

データが破壊されてしまう

・中身を改ざんされてしまうので

 


 

Q.何を学んだらいいのか?

SQLインジェクション、XSS、CSRF対策

 

・JavaScriptによる攻撃には注意

・FTPパスワードの漏洩を防ぐ(変なページを作られてしまう)

・第三者のJavaScriptは危険

 

多くの場合は、攻撃を複数組み合わておこなってきます。よって、複数の攻撃に対して、知識をもっておく事が重要になります。

 

※入力のサニタイズでかなり防げる。

 


 

Q,防御方法は?

・セッション認証の理解

・PHPSSIDの理解

・サニタイズの徹底(<script>は、文字列に変換してしまう)

・入力文字数を制限する

・HTTPS通信による暗号化

・CSRFトークンの発行

・httponly属性

 


 

Q.ポイントは?

限界まで安全性の高いアプリケーションを作る。

プログラム側で、きちんと対策をしておく事が大事。

 

安全なシステムを作る方法>>

 

 

XSSとは?

他のサイトに飛ばし、「クロスサイト」。情報を盗み出す事。サイトを横断しない場合もある。

変なページに行き、クッキー情報から、情報を抜きとられ、利用者のブラウザなどのアプリから、不正攻撃などを勝手にされてしまう

 

■スクリプトを入れる

・他のページ(罠ページ)に誘導

・ユーザがアクセス

・JSでセッションID(PHPSSID)を抜き取る

・セッションハイジャックと組み合わせて、攻撃をする。

 

■XSSの流れ

1.メールをクリックして、変なサイトを開く。

2.JSによって、サーバーにリクエストが送信されてしまう。クッキー情報などを読み取られる

3.勝手にログインされて、改ざんされる

 

・利用後はログアウト

・信頼性の低いサイトにアクセスしない

・操作履歴を見る事

 


 

■種類について

1.反射型XSS

罠が仕掛けられたWebページにユーザがアクセスすると、悪質なサイトに誘導するためのURLが表示される。

クリックすると攻撃者が用意したサイトに誘導されて、不正なスクリプトが実行されるタイプのXSSです。

ユーザのWebページへのアクセスに対して、悪質なサイトへ誘導するためのURLを返すことから「反射型」と呼ばれます。

 

2.格納型/蓄積型/持続型XSS

攻撃者があらかじめWebページに不正なスプリクトを格納し、ユーザがそのページを閲覧するたびに不正なスクリプトが実行されるXSS。

反射型XSSに比べると、ユーザがページにアクセスするだけで不正なスクリプトが実行されます。

 

※FTPの漏洩により起こる。

 

3.DOM Based XSS

サーバ側で不正なスクリプトを実行するのではなく、Webブラウザ上で動作するJavaScriptの脆弱性を悪用したXSSです。DOM(Document Object Model)は、簡単にいうと、JavaScriptを使ってWebページを操作する仕組みで、その仕組みを悪用したのが、DOM Based XSSです。

 

 

■対策方法

・サニタイズ処理(チェック処理、エスケープ処理)

・JSのライブラリなどを、最新環境にする

・HTTPS通信のみOKにする

・入力文字の制限

・利用後はログアウト

・信頼性の低いサイトにアクセスしない

・操作履歴を見る事

 

XSS対策について>>

 

httponly属性だけだと、防げない...という事ですね^^;

あくまで、緩和できるようです。

 

CSRFとは?

■基本

セッションIDを盗まれてしまい、ログインされてしまう事。

ログインしたままの状態を狙う。

 

ネットバンキングでの被害が深刻。ワンタイムパスワードなどは、この対策のため。

スマホが普及して、ログイン状態を保存するようになり、被害が拡大した。

参照>>

 

被害例

・ECで勝手に買い物される

・SNSに勝手に投稿

・預金の引き出し

 

 

対策方法

・ワンタイムパスワードの発行

・リクエスト送信元の確認

・キャプチャをつける(画像のヤツ)

・トークンの発行

・パスワードの再入力

 

 

 

・セッション変数とhiddenタグのパスワードを照合して、認証をする仕組み。

これが安全。

 

・送信元のリファラーのチェック

・reCAPTCHAをつけるとさらに安全になる。

 

※自分で作ったアプリに、セキュリティー実験を行うと良い。

 

CIの対策

1.SSL接続にして、通信を暗号化する

2.ランダムなセッションIDを生成する

3.

 

$config['cookie_httponly'] = TRUE;

 

HTTPOnly属性が設定されるため、JavaScriptによるセッションハイジャックが防止されます。

 

 

$config['sess_match_ip'] = TRUE;

 

セッションデータのIPアドレスとクライアントIPアドレスがマッチしているかチェック

 

$config['sess_match_useragent'] = TRUE;

 

セッションデータのUser-Agentとリクエスト時のUser-Agentがマッチしているかチェック

 

 

$config['sess_regenerate_destroy'] = TRUE;

 

セッション ID の自動再生成をするときに古いセッション ID に関連付けられたセッションデータを 破棄するかどうか。 FALSE に設定すると、データはガベージコレクタによってあとで削除されます。

 

 

$config['sess_encrypt_cookie'] = TRUE;

セッションデータの暗号化

 

■HTTPSのOK

$config['cookie_secure'] = TRUE;

HTTPSのみCookieを許可する設定

 

 

■ドメインの指定

$config['cookie_domain']

 

本番環境では、ドメインの指定までしておくと、安全です。

 

考察

HTTPSとドメイン指定で、かなり防ぐことができる。

全部指定すると、かなり強いセキュリティーニデキル!!

 

【参照】

CI_Session設定について>>

 

HTTPOnly属性

HTTPOnly属性...JSからのアクセスができないようにする設定。

XSS攻撃の防止になる。

 

 

SQLインジェクション

不正なSQL文を差し込まれることで、おこる。

DB内を全て消される可能性があるので、凄く注意しておく必要がある。

 

 

被害

・DB内の情報を抜き取られる

DBの全消去

 

 

場所

・検索ボックスのSQLは注意

 

対策

・文字列のサニタイズ

・入力値の制限

・プリペアドステートメントで防止

 

 

 

セッション固定化攻撃

 

・セッションIDをURLパラメータにしない(クッキーに格納する)

・HTTPS通信で利用するCookieにはsecure属性をつける。

・ログイン後に新しくセッションを開始する(降りなおす)

 

 

まとめ

セキュリティーの基本は、サニタイズです。

JS攻撃を防ぐために、https通信のみ許可にしておく事です。

httponlyはDOM攻撃を防ぐことができませんが、しっかりと対策しておきましょう。

 

これだけで、かなり防ぐことができます。ログインが必要な場合は、合わせてセッションidについての知識などを勉強しておきましょう。

 

 

【参照】

PHP初心者に知ってほしいCSRF脆弱性とその対策

PHPでお問い合わせフォームを作る:CSRF対策

クロスサイトリクエストフォージュリ(CSRF)をPHPで検証する

 

コードイグナイターセッションライブラリ

サイトを安全に!PHPでcsrf対策を行う方法【初心者向け】

 

PHPの勉強方法

目安は1日3~5時間の勉強で200日程度です。

 

 

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

 

■フォーム

基本的なフォーム

ページ遷移をしないver

メールが届くフォーム

 

■ DBへの接続■

管理者権限について

PDOについて知ろう

PDOで接続する

try catchでエラー表示

DBの内容を表示させる

 

■ フレームワーク ■

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

ララベルとは?

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

オートロードとは

無名関数とは?

MVCとは何か?

 

■ オブジェクト指向■

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

オブジェクト指向とは?

 

 

【フレームワーク】

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

 

 

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

 

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

 

■ フレームワーク ■

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

ララベルとは?

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

オートロードとは

無名関数とは?

MVCとは何か?

 

 

【フレームワーク】

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

 

 

参照サイト

オブジェクト指向とは?

PDOとは何か?

mysql_connect()

アロー演算子とは?

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

 

お気軽にご相談くださいませ!!

 

 

 

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

 

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

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

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

 

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

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

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

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

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

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

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

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

 

内部要因とは

SEO対策の内部要因とは?

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

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

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

 

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

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

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

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

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

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

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

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

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

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

 

 

 

 

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

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

 

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

北海道 [ 北海道 ]

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

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

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

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

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

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

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

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

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

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

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