世界中の共有動画を横断検索。youku.com,youtube,tudou.com,Dailymotionに対応。・・・そんなサービスの開発者ブログ。

みんなの動画サーチ

個人メニュー
最近見た動画

サービス:みんなの動画サーチ   利用できる動画共有サイト : youku.com , youtube , tudou.com , Dailymotion

Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--------(--)

PHPを使った開発におけるセッションハイジャック対策について

セッションハイジャック

 WEBアプリケーション内で値をページ間で持ちまわす方法はいくつかあります。その中でもよくあるのがセッションを使うものです。

 セッションとはユーザーに一時的なパスワードを発行し、そのパスワードを確認してサーバーに保存されているユーザー固有の情報を利用させるものです。パスワードはセッションIDと呼ばれます。セッションIDはクッキーに保存することが多いですが、クッキーが使えないときはURLの中に追加してGETで回します。

 ということは、このセッションIDをクラッカーに見破られるとそのセッションの持ち主を詐称されてしまうわけです。これがセッションハイジャックです。

 セッションIDを連番など推測しやすいものにしていると、この攻撃を受ける可能性が高くなるため、セッションを利用する場合は予測困難なセッションIDをユーザーに出すことが大事です。php付属のセッション関数を使えば簡単です。
 もしセッション関数では仕様に合わない場合はmd5()などの暗号化関数を利用して自分で暗号化します。

 また、同じセッションIDを使い続けていると盗まれる可能性が高くなるため、保持する情報の重要性に応じて有効時間(ライフタイム)を設けておくことも大事です。たとえば銀行のシステムですと、盗まれては大変なことになるため30分以下の値が設定されていることが多いです。みん動の場合は個人情報、機密情報などの重大な情報は持たないためセッションIDの寿命はとても長くなっていますが、これは例外です。
 phpのセッション関数を使っているなら、session_cache_expire (30);で30分に出来ます。デフォルトは3時間です。

 さらにセキュアにしたいならsession_regenerate_idをつかえばセッションIDをワンタイムパスワードのようにできます。ただしつくりによっては画面遷移次第で誤動作を起こしてしまうので注意が必要です。

 セッションハイジャックの方法には予測の他に盗聴がありますが、これは通信の暗号化によって対抗することが出来ます。SSLの利用するわけです。漏洩がシリアスな結果を生む情報を取扱う場合は暗号化を利用するのが適切です。

 ちなみに特にセキュリティの重要性が高い銀行のWEBシステムは、SSLによる通信暗号化+短いセッション有効時間がほぼ必ずと言っていいほど使われています。さらに+αとしてワンタイムパスワードや電子証明書、専用回線の利用が行われることがあります。

tag : php セキュリティ

2008-03-25(Tue)

phpを使った開発におけるNULLバイトアタック対策とディレクトリトラバーサル対策

NULLバイトアタック


 NULL文字 (\0) が入力値に有った場合はfileopen時などに誤動作を起こす可能性があります。そのため、危険な個所については
str_replace("\0",'',$string);
をかけておきます。


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


 ファイルを読み込む際、ユーザーから「../../../」などと入力されると、予期しないファイルを読み出されてしまう可能性があります。そのためこれをサニタイズします。../の削除あるいはbasename()を使うと良いでしょう。

tag : php セキュリティ

2008-03-25(Tue)

phpを使った開発におけるOSコマンドインジェクション対策

OSコマンドインジェクション

 OSコマンドインジェクションとは、exec()などのOSに対するコマンドを発行する関数を利用しているときに注意すべき攻撃です。下記のコードをご覧ください。
$filename = $_POST["filename"]
$shell="rm -rf $filename";
exec($shell);

 このようなコードだと、もしfilenameに「hoge|| rm -rf /」とあった場合、最悪PHPから操作可能なファイルのほとんどが削除される可能性があります。
 そのため

|
&
``
$
<
>

 の文字はサニタイズするか、存在を確認したらエラーにするようにします。あるいは想定していた値以外であればエラーにするといった処理をしてもいいでしょう。
 ただ、exec()にユーザーの入力を使わないのが一番確実です。

tag : php セキュリティ

2008-03-25(Tue)

phpを使った開発におけるSQLインジェクション対策

SQLインジェクション対策

 外部入力のデータをSQLに埋め込んで使うことは良くあります。たとえばユーザー認証にSQLを発行するようなケースです。
 このとき、ユーザーから入力された内容をそのまま利用してはいけません。たとえば下記のようなコードです。

$pass = mysql_escape_string($_POST["pass"]);
$sql="select id , username where pass = $pass"
 このとき、$_POST["pass"]に
"4 OR 1=1"
 と入力がなされていると、PHPの設定次第ではこのようなSQLが生成されます。
select no,username where pass= 4 OR 1=1

 このSQLが発行されると、全てを返してしまいます。そのため、まずSQL文は値を「'」でかこんで

$sql="select id , username where pass = '$pass'"

という形にします。ただしこれだけでは、$IDに [1' OR 1='1]と入力されているとこのようなSQL文が生成されてしまうため

select no,username where pass='4' OR 1='1'

 同じことになります。
 そのため値のサニタイズもあわせて行う必要があります。MYSQLならmysql_escape_string()、PostgreSQLならpg_escape_string()が利用できます。ADODB、PEARDBなどを使っているなら、サニタイズ関数がありますからそちらを使うと良いでしょう。

tag : php セキュリティ SQLインジェクション

2008-03-24(Mon)

phpを使った開発におけるクロスサイトスクリプティング対策

 昔のフォルダをあさっていると、およそ2年前(06/08/27)に書いたセキュリティに関してのメモが見つかりました。もともと後輩の教育用に作っておいたメモなのですが、残念ながら諸事情により使われなかったものです。
 今でも使えると思いますから公開したいと思います。
 第一回はクロスサイトスクリプティングです。


 悲しいかなWEB上にいる人たちの中にはクラッキングを試みる人も存在します。そういった人たちから大事なサービスを守るため、ふだんからセキュリティを意識した開発を行うことが重要です。

 クラッカーがWEBアプリケーションに対して攻撃を掛けてくる方法は大きく分けて2つあります。サーバーを直接クラックするタイプと、WEBアプリケーションの脆弱性をつくタイプです。
 今回はWEBアプリケーションの脆弱性をつくタイプに話題を絞り、その手法と対応策について述べてみたいと思います。

続きを読む

tag : クロスサイトスクリプティング php セキュリティ XSS

2008-03-24(Mon)

 みんなの動画サーチ 現在の人気動画

RSSフィード
最近の記事
月別アーカイブ
カテゴリー
逆アクセスランキング
プロフィール

Author:ナカタツ
 共有動画サーチの開発をやっているフリーランサーです。プログラム歴は趣味で使っていた頃も合わせるとちょうど今年で10年目。最近はPHPばかり使ってます。
 私に興味を持ってくださる方はお気軽にご連絡ください。Skypeでお話できる人歓迎。メールフォームはこちら

カレンダー
10 | 2009/11 | 12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

みんなの動画サーチへ戻る

カテゴリ:芸能・テレビ | 音楽 | アニメ | おもしろ | 神・衝撃 | ゲーム | 動物 | スポーツ | 時事ニュース | 自然・歴史 | 車・バイク | セクシー


アクセス解析 アクセスランキング
  • seo

Powered by FC2 Blog

FC2Ad

FC2ブログ

Copyright © みんなの動画サーチ開発者ブログ All Rights Reserved.