タグ

phpとセキュリティに関するlovemakinkoのブックマーク (7)

  • 第25回 PHPのアキレス腱 ── セッション管理 | gihyo.jp

    PHPにはHTTPセッション管理モジュールが標準で付いてきます。このセッションモジュールには非常に重大なセキュリティ上の脆弱性が修正されずに残っています。その脆弱性とはセッションアダプションです。 セッションアダプションとは、セッション固定化攻撃に利用される脆弱性です。PHPのセッション管理モジュールがセッションアダプションに脆弱であることは、かなり以前、何年も前から知られています。しかし、開発者の理解不足より脆弱性が放置されたままになっています。 セッションアダプションとは セッションアダプションとは、ブラウザ等から送信された未初期化セッションIDをそのまま利用してセッションを初期化してしまう脆弱性です。ユーザが送信してきたIDでも第三者に予想できない文字列であれば大丈夫なのでは?と考える方もいると思います。その通りで第三者に予想できなければ問題ないですし、仮に予想できてもログインする際

    第25回 PHPのアキレス腱 ── セッション管理 | gihyo.jp
  • 配列データに一気にhtmlspecialcharsをかける - phpspot

    htmlspecialchars はタグをサニタイズしてくれる非常に便利な関数ですが、この関数は配列にかけることは出来ません。 そこで、array_mapです $array = array("<b>a</b>","<span>name</span>"); $array2 = array_map('htmlspecialchars', $array); (注意) このままでは問題があります。ページ下部を参照。 これにより、$array で渡されたデータに対してすべて htmlspecialchars をかけた配列を $array2 に入れることができます。 array_mapの引数に使えるのは htmlspecialchars だけでなく、自分で定義した関数なども適用できます。 htmlspecialchars では、普通に使った場合はシングルクオートをエスケープしてくれないので、次のように

  • 【中級】情報漏洩を防ぐDBセキュリティ 最終回

    画面1●SQLインジェクション用の攻撃ツール<BR>中国系サイトで出回っている攻撃ツールの一つ。 SQLインジェクションの脆弱性が存在するサイトの URLを入力すると,テーブル名やカラム名,実際のデータなどを容易に取得できてしまう 図10●なぜSQLインジェクションの脆弱性が生まれるのか?<BR>アプリケーションでSQL文を組み立てる仕組みの場合,Webブラウザで受け取ったデータから不正な文字を取り除くような仕組み(無害化)を実装していないと,予期しないSQL文を実行される恐れがある。これにより認証を不正に通過されたり,個人情報を不正に取得されたりする 図11●準備済みSQL文を使う<BR>準備済みSQL文を使うと, SQL文の検索条件部分を変数としてデータベースで解析しておき,変数に値をセットする。不正な文字を受け取ったとしても,SQL文が改ざんされる危険性はない。Java(JDBC),

    【中級】情報漏洩を防ぐDBセキュリティ 最終回
  • プレイスホルダの扱いがちょっと楽になる@PHP

    DoRuby! (ドルビー!) は現場のエンジニアによる、主にRubyなどの技術に関する様々な実践ノウハウを集めた技術情報サイトです。 ■プレースホルダ  SQL文作成時に、 実行時に値が決まる部分を「?」に置き換えて、「?」に当てはめたい値を変数とか配列で指定します。そうすると、SQLインジェクション対策のためのエスケープ処理を自動で行ってくれます。 ------------------------------------  $id = 6; $sql = select * from t_bbs where id = ?;  query($sql, $id); ------------------------------------  「?」のところに「6」が入ります。 プレースホルダの使い方はこんな感じです。さくっといきます。 さて題はここからですが、 プレースホルダは代入する数だ

  • mysql_real_escape_string - SQL 文中で用いる文字列の特殊文字をエスケープする

    string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier = NULL ] ) 現在の接続の文字セットで unescaped_string の特殊文字をエスケープし、 mysql_query() で安全に利用できる形式に変換します。バイナリデータを挿入しようとしている場合、 必ずこの関数を利用しなければなりません。 mysql_real_escape_string() は、MySQL のライブラリ関数 mysql_real_escape_string をコールしています。 これは以下の文字について先頭にバックスラッシュを付加します。 \x00, \n, \r, \, ', " そして \x1a. データの安全性を確保するため、MySQL へクエリを送信する場合には (わずか

  • phpお問い合わせフォームのセキュリティについて - 1.html(入力フォームを表示)<formaction="2.php"... - Yahoo!知恵袋

    php お問い合わせフォームのセキュリティについて 1.html(入力フォームを表示) <form action="2.php" method="post"> method="POST"で 2.php に値を渡す 2.php(入力内容を確認してもらう) セッションを利用。 session_start() $_SESSION['hogehoge'] で3.phpで値を利用できるようにする 3.php(入力内容をメールで送信) 2.phpから送られた$_SESSION['hogehoge']を元に、mail()を使いメール送信 こんな感じでフォームの入力内容を送信したいのですが、 セキュリティの観点から見て注意しなければならない事は何でしょうか? ご回答ありがとうございます。 "2.php"では"1.html"からPOSTされたデータを使用出来ますが、 "1.html"で入力された値を"2.p

    phpお問い合わせフォームのセキュリティについて - 1.html(入力フォームを表示)<formaction="2.php"... - Yahoo!知恵袋
  • 第6回 意外に知られていないブラインドSQLインジェクション | gihyo.jp

    前回の記事でSQLインジェクションの話は終わりにして、クロスサイトスクリプティングの話を書かせて頂こうと思っていました。しかし、6月5日に東京にて開催されたPostgreSQLカンファレンス2007でセキュリティをテーマに講演させて頂き、意外にブラインドSQLインジェクションをご存じでない方が沢山いらっしゃいました。40名ほどの聴講者の皆様にSQLインジェクションをご存じの方?とお聞きするとほぼ全ての方が知っていると答えたのですが、ブラインドSQLインジェクションをご存じの方は数名でした。 SQLインジェクションの常識 ブラインドSQLインジェクションの話をする前に、SQLインジェクションとその対策の常識について確認します。 SQLインジェクション対策として間違ってはいないが不十分な対策 エラーメッセージを表示しない(特にSQLエラー) ユーザ入力文字列をエスケープする これらはSQLイン

    第6回 意外に知られていないブラインドSQLインジェクション | gihyo.jp
  • 1