WEBアプリ開発に関する技術を綴るブログ

php,js,apache,mysql,laravel,fuelphpあたりの技術

PHP開発者が知っておくべきセキュリティ対策

PHP脆弱性への対策方法とは?

アクセス制御 ・ユーザーにログインIDとパスワードを入力させる ・指紋認証 ・クライアント証明書 (b)認可 ネットワークルーターを通過しようとするアクセスに対して、 通過を許可するものと拒否するものを決める事 (c)監査 認証や許可に関する諸々の処理をログとして記録して、 条件の見直しやアクセスの検証をする事

アクセス制御方式とは何か

(a)任意アクセス制御 アクセス権限の設定。最もスタンダードな方式。 Owner,Group,Everyoneといった属性ごとに、 Read,write,executeといった権限を付与していく。

(b)強制アクセス制御 サブジェクト:アクセスするユーザー側 オブジェクト:アクセス対象となるシステム側のリソース サブジェクトとオブジェクトそれぞれにセキュリティレベルを設定し、 レベルを比較することによってアクセス制限を行う。

都度最新バージョンへアップデートする

常時SSL化

httpからhttpsへリダイレクトする

.htaccessに下記を追加

RewriteEngine On

RewriteCond %{HTTPS} off 「%{HTTPS} off」は「httpsではない場合」

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

元のURLページ評価を引き継ぎたい場合は、301リダイレクトにする!

RewriteEngine on

RewriteCond %{HTTPS} off 「%{HTTPS} off」は「httpsではない場合」

RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

WAF(web application firewall)

webアプリケーションに潜む脆弱性の"無害化"

一般的なファイアウォールと違って、データの中身をアプリケーションレヴェルで解析可能

従来型WAF 1.導入費用の高さ 100万円以上の初期費用と年間数十万円以上のサポート費が必要 2.導入・撤去の敷居の高さ 複雑な設定作業と時間がかかる 3.ホワイトリスト型の防御機能を使うからハイコストのチューニング作業を要する 4.セキュリティエンジニアの配置コスト

クラウド型 1.導入まで一週間 2.システム構成を変えずに導入や解除可能 3.セキュリティ技術者不要 4.初期費用 10万円くらいで、月額3万円あたりから利用可能 5.短期のみの利用可能

IDS(不正侵入検知システム)

通信を監視して、異常があれば管理者へ通知。 ネットワーク型:ネットワークを流れる通信パケットを監視 ホスト型:監視対象のサーバに置かれ、通信の結果生成されたサーバ上の受信データ,ログを監視。 不正侵入検知やファイル改ざんにも対応

IDSのデータ収集方法 不正検出 異常検出

IPS(不正侵入防止システム)

IDSより進んで、異常通信があれば、管理者へ通知 + 異常な通信をブロック。 迅速な対応が可能になる。

IDS/IPSはwebアプリケーションレベルの内容まで見るのは限界があるので、 そこまでをカバーする場合はWAFを検討する必要がある。

ファイアウォール パケット・フィルタリング NAT

Dos攻撃対策 端末のIPアドレスをアクセス制御すれば被害を最小化する

D Dos攻撃対策

海外サーバを経由することが多いので、海外からのアクセスはブロックする

XSS対策

悪意あるコードを埋め込めないようにする

1.<>"&は文字参照にする HTML中に悪意あるコードを埋めなくするには、 <>"&の文字をエスケープしないといけない。 <は<に、>は>に変換される。

2.JavaScriptに動的に文字列を渡す時はURLエンコードする

HTMLに悪意あるコードを埋め込まれるより、JavaScriptを埋め込まれる方が 大きな被害につながる

3.hrefやsrcの値がURLか確認する

4.php.iniでsession.cookie_httponly=on

5.httpd.confでTraceEnable Off