タグ

sqlインジェクションに関するs_yasueのブックマーク (3)

  • PHPエスケープ関数の比較一覧 | 株式会社フォレスト・コンサルタンツ

    CR … カーソルを文頭へ戻す制御コード(Carriage Return) EOF … ファイル終端を示す制御コード(End Of File) 黄色い部分が全部で4箇所、すなわち、htmlspecialchars($str)で変換できない文字が1つ、addslashes($str)で変換できない文字が3つあることが分かります。より安全なプログラムを心がけるには、htmlspecialchars($str)ではなくhtmlspecialchars($str, ENT_QUOTES)を、addslashes($str)ではなくmysql_real_escape_string($str)を使う必要があります。 また、クロスサイトスクリプティング対策とSQLインジェクション対策では、変換すべき文字や、変換後の文字が異なることも一目瞭然かと。この2つは全く別物として考えるべきです。 と偉そうに書いて

  • 自己流のSQLインジェクション対策は危険

    HTMLエスケープの対象となる < > & " の4文字は、文字実体参照に変換された後、preg_replace関数でセミコロンを削除してしまうので、中途半端な妙な文字化けになりそうです。 一般的な原則としては、データベースにはHTMLの形ではなくプレーンテキストの形で保存しておき、HTMLとして表示する直前にHTMLエスケープする方法で統一することで、上記のような文字化けやエスケープ漏れをなくすことがよいでしょう。 脆弱性はないのか このsanitize関数に脆弱性はないでしょうか。上表のように、バックスラッシュ(円記号)を素通ししているので、MySQLや、設定によってはPostgreSQLの場合に、問題が生じそうです。以下、それを説明します。以下の説明では、MySQLを使う想定とします。 以下のように、ログイン処理を想定したSQL文組立があったとします。 $sql = sprintf(

  • 今夜分かるSQLインジェクション対策 ― @IT

    【関連記事】 内容についてのアップデート記事を公開しています。あわせてご確認ください(編集部) Security&Trustウォッチ(60) 今夜こそわかる安全なSQLの呼び出し方 ~ 高木浩光氏に聞いてみた http://www.atmarkit.co.jp/fsecurity/column/ueno/60.html Webアプリケーションに対する攻撃手法の1つであるSQLインジェクションの存在は、かなり広く知られるようになった。しかし、その対策はまだ当に理解されていないように思える。フォームから渡された値の特殊文字をエスケープしたり、PHPのmagic_quotes_gpcといった自動エスケープ機能をオンにするだけで対策したつもりになっていないだろうか。 基はもちろん、セカンドオーダーSQLインジェクションやマルチバイト文字を利用したSQLインジェクションの攻撃パターンや、その対

    今夜分かるSQLインジェクション対策 ― @IT
  • 1