Happy Geek Life @ watanabefg

Happy Geek Lifeでは私的プログラミングのまとめやプライベートを紹介しています。

自分への戒めのためのメモ(CSRF編)

ブログランキングに参加しています。応援クリックされると記事を書く頻度が上がります。
お気軽にコメントもどうぞ。記事のリクエストも受け付けます。
人気ブログランキングへにほんブログ村 IT技術ブログ IT技術情報へ

「サービスを作るのは大事だけどユーザーに迷惑かけちゃいけない」


バグがあってもセキュリティに問題があってもいけない。

昨日はCSRFのことがふっとド忘れしまったので、ここに書いておいて忘れないようにする。
歳を取っているという証拠かw

CSRF: クロスサイトリクエストフォージェリ
具体例として、掲示板に意図しない書き込みをさせられたり、オンラインショップで買い物をさせられたりするなどの被害が起こる。



攻撃の大まかな流れは以下の通り。 

簡単な HTML を例示して、その原理を具体的に解説する。
1.攻撃者が、攻撃用の Web ページを作成して WWW 上に公開する。
(WWW上ででなくとも、未対策のHTMLメーラーにウェブページをHTMLメールとして送信するだけでもよい。) 
2.第三者が、攻撃用の Web ページにアクセスする。
3.第三者は、攻撃者が用意した任意の HTTP リクエストを送信させられる。 
4.送信させられた HTTP リクエストによって、攻撃者の意図した操作が行われる。
(ここで「第三者」とは、被攻撃サイトに意図せずアクセスさせられると言う意味で用いている。)
(Wikipediaより引用)

iframeでbody onloadでフォームにsubmitするようなhtmlを読ませて自動的に掲示板に書き込みを行わせる等が例としてあげられていた。

利用者側の対策としては、Cookieに依存した攻撃があるのでCookieをこまめに破棄することとか。

サイト運営者側の対策としては、
第三者が知り得ない情報をフォームに入力させる(あるいはフォームの hidden パラメータに設定しておく)というのが基本的な対策方針である。  
ここで利用する第三者が知り得ない情報は、推測されにくい文字列であり、かつ総当り攻撃に対して耐性がある必要がある。具体的には以下の方法が挙げられる。
認証情報を入力させる
認証制の Web システムの場合、入力フォームにユーザIDとパスワードを含めるという方法がある。システムの利用者から見れば、既にログイン画面で認証を行っているため冗長な操作であるが、クロスサイトリクエストフォージェリの対策としては最も効果がある。 
ワンタイムトークンを利用する
入力フォームに、第三者に推測されにくい文字列を hidden パラメータとして指定しておき、フォームの情報を受け取る段階でそのパラメータの整合性をチェックするという方法である。そのパラメータが整合性のチェックでしか使われない一時的なデータであることが多いために「ワンタイムトークン」と呼ばれる。但し、第三者が知り得ない情報として有効である限りは、必ずしも「ワンタイム」である必要は無い。 
また、CAPTCHAなどが対策として挙げられる文献もあるが、このようなチューリングテストボットによる分散・多発型攻撃への一般的な対策であり、必ずしも推測されにくい文字列であることや、総当り攻撃に対して耐性があることを保証するものではないため、CAPTCHAで表示される文字列について別途セキュリティ的な観点で評価する必要がある。
(Wikipediaより引用)

ということでした。

hiddenパラメータはjsからでもsubmitされたらpostされるんじゃないのか?という疑問があるから
個人的に対策としては認証かワンタイムパスワードかCAPTCHAを使うことにします。

悪さしようと思えばできそうな気もするし。

それに僕はReCAPTCHAが好き。
Hironori Watanabe ( @nabe__ )は大阪のフリーランスWebクリエイター。 PHP,GAE/Pの開発を特に好む。 2011/2/14よりGAE/Pを利用して あぐりかるちゃん を運営し、 日本農家の売上アップを支援することが最近のテーマ。
音楽が好きなので、たまにおすすめを貼り付けます。そちらも良ければご覧ください。


WordPressのバックアップ環境作り

ブログランキングに参加しています。応援クリックされると記事を書く頻度が上がります。
お気軽にコメントもどうぞ。記事のリクエストも受け付けます。
人気ブログランキングへにほんブログ村 IT技術ブログ IT技術情報へ

最近になって妙にWordPressの話が飛び交っているので、流行りに合わせてみます。
以下のようにレンタルサーバに自前でインストールされた方が対象です。

・PHPMyAdminでデータベースを作成した
・WordPressのファイルをアップロードした


バックアップって面倒だなぁ...そんなことをお考えのあなた。
それは手作業でやっているからですよ。


データベースのバックアップ|wordpress codex でも紹介されていましたが、
いまやバックアップ用のプラグインも出ていたりします。

でもプラグインでバックアップするのってwp-contentの下にバックアップファイルを保存するので、
WPのファイル一式消えたら終わりやん。。と個人的には思うので、

上のような方でさらにssh接続などができるレンタルサーバ(さくらのレンタルサーバ等)であれば、
mysqldumpでバックアップファイルをWordPressのファイルとは別の場所に
とっておくことをおすすめします。

その他の方はプラグインをご利用ください。

mysqldumpでもcronを使えば毎日バックアップを取るといった運用方法がとれるので、
うちはそうしています。
たまりすぎるとサーバもひっ迫しますので、3日間だけですが。

そんなわけで、データベースバックアップ→3日間サイクル運用の方法をお伝えしようと思います。

・データベースのバックアップはこちらをご覧ください。
・3日間サイクル運用の方法
 とても簡単です。

バックアップのコマンドをdaily.shに記述しましょう。
そして以下のコマンドを最後に追記します。

 rm -f `find $BK_DIR -mtime +3`
※$BK_DIRにはバックアップファイルを保存しているディレクトリを指定してください。

上記のコマンドを実行すると、4日前までのファイルが削除されます。

あとはこれを毎日時刻を指定してcronを回しておきます。
0 0 * * * $HOME/daily.sh
※$HOMEにはdaily.shを保存しているディレクトリを指定してください。

この例では毎日0:00になるとdaily.shが実行されます。

これだけで4日前以前のファイルは綺麗になくなりますので、
定時に無駄にバックアップすることもない運用ができますね。
ぜひお試しください。
Hironori Watanabe ( @nabe__ )は大阪のフリーランスWebクリエイター。 PHP,GAE/Pの開発を特に好む。 2011/2/14よりGAE/Pを利用して あぐりかるちゃん を運営し、 日本農家の売上アップを支援することが最近のテーマ。
音楽が好きなので、たまにおすすめを貼り付けます。そちらも良ければご覧ください。


やりたいことやったもんがち。

ブログランキングに参加しています。応援クリックされると記事を書く頻度が上がります。
お気軽にコメントもどうぞ。記事のリクエストも受け付けます。
人気ブログランキングへにほんブログ村 IT技術ブログ IT技術情報へ

プログラミングネタ書くのにはamebloは適さないなぁということで、
やはりbloggerに戻ってきました。
読者の方さまよってすみません...

Bloggerもいつのまにやら新レイアウトになって、Google+と連携されるようになっていました。
ブログを書くのが楽しみです。

今日のネタは2本
・夜の小人サービス面白いなー
・バッチの環境直したいよう

夜の小人サービス

忙しい時にソーシャルエンタープライズプログラマーがチケットを見て、夜な夜な直してくれるというもの。ちなみにこのアイデアは@sunaotさんのです。Twitter見てたら面白そうだと思ったので。
結局1回しかお会いしてないなぁ。

バッチの環境直したいよう

これは自己満足ですが、simpletest見てたらバッチのプログラムも自動テストできるよねと思ったので。
前職のバッチの環境お世辞にもイケてなかったのでまだいけるなと感じました。

ざっくりとは以下の通り。
・データはfixturesでバージョン管理。
・開発はローカルでやっても良いけど、実行環境は1つしかないという状況。
・testcaseの中に実行するshのテストコードを書きます。
  データは都度リポジトリのfixturesからpullしてきます。
  テストコードはコンペアツールがあったはずなのでそれをアサーション代わりに。
・テストコードも管理しておいて、毎回実行させます。
・問題はレガシーなので、そこをどうするかですが、ファンクション単位でできなくてもTDDで頑張るんでしょうなぁ、というのをレガシーコード改善の本を見てて思いました。
Hironori Watanabe ( @nabe__ )は大阪のフリーランスWebクリエイター。 PHP,GAE/Pの開発を特に好む。 2011/2/14よりGAE/Pを利用して あぐりかるちゃん を運営し、 日本農家の売上アップを支援することが最近のテーマ。
音楽が好きなので、たまにおすすめを貼り付けます。そちらも良ければご覧ください。


このブログについて

Happy Geek Lifeでは私的プログラミングやファイナンシャルプランニング、経営方法など、気になったことを紹介しています。

このブログの作者の略歴などはこちら

ブログアーカイブ