X

PHP Security

インジェクション対策、基礎の基礎

インジェクション攻撃には様々な手法があります。メモリ管理をプログラマが行うC言語などではメモリにインジェクションするバッファローオーバーフロー/アンダーフロー、テキストベースのインターフェースではテキストインジェクション(JavaScriptインジェクション、SQLインジェクションなど)があります。 これらのインジェクション脆弱性はなぜ発生するのでしょうか?…

サニタイズは絶対的な悪か?

いつも堅苦しく「こうするほうが良い」とばかり書いているので、たまには「あまり良くない」と言われているセキュリティ対策も、有用かつ必要である例を紹介します。サニタイズの話です。 サニタイズ(Sanitize)とは消毒、汚れた物を綺麗にする事を意味します。汚れた物、つまり悪い物を除去・変換して綺麗にする処理がサニタイズ処理と言われています。悪い物を定義し排除する…

開発者は必修、CWE/SANS TOP 25の怪物的なセキュリティ対策

SANS TOP 25 の解説はもっと後で行うつもりでした。しかし、現在のアプリケーション開発者向け教育に対する疑念のエントリへの反響が大きいようなので書くことにしました。 やるべきセキュリティ対策には優先順位があります。効果が大きい対策から行うべきです。セキュリティ対策は全体的に行うべきものですが、最も効果的な対策を除いて対策を行うようでは全体的な対策など…

OSコマンドのエスケープ – シェルの仕様とコマンドの実装

OSコマンドインジェクションを防ぐための、OSコマンドのエスケープはSQLのエスケープに比べるとかなり難しいです。 難しくなる理由は多くの不定となる条件に依存する事にあります。

OSコマンドのエスケープ

プログラムからOSコマンドを実行する場合、エスケープ処理を行わないと任意コマンドが実行される危険性があります。 今回はOSコマンドのエスケープについてです。

そもそもエスケープとは何なのか?

まずエスケープ処理について全て書こう、ということでPHP Securityカテゴリで様々なエスケープ処理について書いてきました。しかし、「エスケープ処理とは何か?」を解説していなかったので解説します。 エスケープ処理は文字列処理の基本中の基本です。 「エスケープは要らない、知る必要もない」という意見を稀に聞きますが、プログラムに於ける文字列処理とその重要性を…

エスケープファースト、この順序は変えられない

アプリセキュリティ対策の根本的なセキュリティ対策は教育です。セキュリティ対策を教育する場合、エスケープファースト(エスケープを一番)にすると最も高い効果を期待できます。汎用性もあり、自己解決する能力も付きます。

PHP文字列のエスケープ

PHP文字列をテキストとして出力したい場合もあります。PHPの文字列型はバイナリセーフなのでどのようなデータでも保存可能ですが、テキストとして出力するにはエスケープ処理が必要です。

スクリプトアップロード対策(追加)

スクリプトアップロード対策は既に書きましたが、書き漏らしていたので追加します。

いまさら聞けないWebアプリセキュリティの基本ルール

C言語の最も重要なセキュリティの基本ルールは「メモリをきっちり管理する」です。もちろん他にもプログラミングをする上で注意しなればならない事は山ほどありますが、C言語でプログラミングする上で最も基本的なセキュリティのルールは「正確なメモリ管理」です。 Webアプリを作る上でのセキュリティの基本ルールは何でしょうか? 今回はWebアプリセキュリティはもっとシンプ…