【PHP】セキュリティの基礎

その他

概要

  • PHPセキュリティの基礎を学習し、セキュリティを高めます。
  • レンタルサーバーには、一般的にWAF(Webアプリケーションファイアウォール)がついていますので、ONにしておくことが推奨です。

WAFとFW、IPSは何が違うか?

Webサイトを守るセキュリティ対策としてよく知られたものに、FW(ファイアウォール)やIPS(不正侵入防御)があります。

WAFとFWの違い

FWはネットワークレベルでのセキュリティ対策です。送信元と送信先の情報(IPアドレスやポート番号など)を元にアクセスを制限します。ポートスキャンなどの外部公開が不要なサービスを狙った通信は制限できますが、通信の中身までは検査しません。80番ポートや443番ポートへの通信など、正常な通信を装った攻撃には対処できません。

簡単に言うと、主にIPアドレス、ポート番号の制限を行います。

WAFとIDS/IPSの違い

IDSは、不正行為を検出後、指定されたアクション(管理者への通知)を起こすものの防御措置は取りません。一方、IPSは不正行為を検出後、直ちにトラフィックを遮断するなどの防御措置を取ります。

IDS/IPSはプラットフォームレベルでのセキュリティ対策です。OSやミドルウェアの脆弱性を悪用した攻撃や、ファイル共有サービスへの攻撃など、さまざまな種類の攻撃を検査・防御します。防御範囲が広いのがIPSの特長です。しかしWebアプリケーションへの攻撃は多種多様に増えており、また高度化しています。そのためIPSでは攻撃を防ぎきれなかったり、解析のためにネットワークの性能劣化や遅延が起きてネットワークが使えなくなったりすることがあります。

DDoS攻撃は、複数のコンピュータから大量のリクエストを一斉に送信し、サーバーに負荷をかける攻撃、SYNフラッド攻撃は、DoS攻撃の中の1つの攻撃手法でTCPの特性を悪用した攻撃、マルウェアは「malicious software(悪意のあるソフトウェア)」の略称で、不具合を引き起こす目的で作成されたソフトやプログラムを指します。マルウェアには様々な種類があり、「ワーム」や「トロイの木馬」、「ランサムウェア」といったものが代表的です。

WAFとは

WAFはFWやIPSよりも上位のアプリケーションレベルでのセキュリティ対策で、Webアプリケーションに特化した防御対策です。Webアプリケーションへの通信内容を検査し、本来流出しないはずのデータがレスポンスとして含まれていないかチェックします。

セキュリティの基礎

不正ログイン

総当たり攻撃

逆総当たり攻撃

辞書攻撃

XSS:クロスサイトスクリプティング

スクリプト(JavaScriptなど)は、ブラウザ上で実行される命令の一種です。このスクリプトでウェブページの内容を動的に入れ替えたり、ユーザの入力したデータをチェックしたりすることができ、一般的に動きのあるウェブページを構築する際に利用されます。

クロスサイト・スクリプティングの脆弱性とは、悪意のある人が不正なスクリプトを何らかの手段でウェブページに埋め込むことで、その不正なスクリプトが被害者のブラウザ上で実行されてしまう脆弱性です。この脆弱性が悪用されてしまうと、偽のウェブページが表示されたり、情報が漏えいしたりする可能性があります。

(1)反射型XSS (Refrected XSS)

(2)格納型XSS (Stored XSS)

(3)DOMベースXSS (DOM-based XSS)

クロスサイトスクリプティング(XSS)対策としてCookieのHttpOnly属性でどこまで安全になるのか
クロスサイトスクリプティング(XSS)の緩和策として、CookieにHttpOnly属性を付与する方法が知られていますが...

脆弱性の例

【PHP】htmlspecialchars関数でXSS対策をしてみた | SIOS Tech. Lab
【PHP】htmlspecialchars関数でXSS対策をしてみた | こんにちは。サイオステクノロジーの川田です。 ...

対策

クロスサイトスクリプティング(XSS) - とほほのWWW入門
【XSS】クロスサイト・スクリプティングとは?対策方法も解説【PHP】 | ケケンタの独学ITブログ
XSS(クロスサイト・スクリプティング)について解説しています。この記事を読むとXSS攻撃の流れや原因、PHPでの対策方...

SQLインジェクション

CSRF:クロスサイト・リクエスト・フォージェリ

——————————————————

ディレクトリ・トラバーサル

メールヘッダー・インジェクション

セッション・ハイジャック

クリックジャッキング

X-FRAME-OPTIONSヘッダーで解決する

サーバーアクセスのセキュリティ

header('Content-Type: application ・・
header('X-Content-Type-option:nosnitf ・・
if($_SERVER["HTTP_X_REQUESTED_WITH']

パスワードのハッシュ化

ある一定の法則に従って変換する。