PHPカンファレンス2013における徳丸のプレゼン資料です。後から、参考文献などを加筆しました。Read less
![安全なPHPアプリケーションの作り方2013](https://cdn-ak-scissors.b.st-hatena.com/image/square/93f9acb1d37dbdcbf4d680c851a561eaa5c55053/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fphpconf2013-130914044057-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
PHPカンファレンス2013における徳丸のプレゼン資料です。後から、参考文献などを加筆しました。Read less
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つは全く別物として考えるべきです。 と偉そうに書いて
Rails 界隈で話題の Mass Assignment 脆弱性を CakePHP で防ぐ方法です。 Github に Mass Assignment 脆弱性が発見されて、Rails 界隈で話題になっています。この問題自体は目新しいものではなく、Rails 自体の問題というより、Rails アプリケーションの作り方の問題ということで、以前から作る側が注意を払う必要がありました。 この Mass Assignment 脆弱性は、Rails を手本に発展してきた CakePHP アプリケーションでも同様の問題が発生する可能性があります。知っている人には常識なのですが、まだ知らない人もいるかと思うので、CakePHPにおける対策方法を書いてみます。下記コードはCakePHP2系を想定していますが、考え方はCakePHP1系でも同じです。 Mass Assignment 脆弱性 CakePHP に
この記事は賞味期限切れです。(更新から1年が経過しています) PHPフレームワークは数多く公開されておりますが、 中でも個人的にお気に入りなのはシンプル・軽量さが売りのCodeIgniterです。 » CodeIgniter – Open source PHP web application framework この度Nettuts+でCodeIgniterをセキュアに使うためのチュートリアルが紹介されていました。 ※2010/08/07 セッションエンコーディングの項で、キー文字列を入力した例を追記 CodeIgniter from Scratch: Security | Nettuts+ こちらがそのチュートリアルビデオなのですが… 35分と大変長いので、要点だけ下にまとめておきます。 ビデオではスクラッチから書いていて大変わかりやすいので、 時間がある時に見ておくと良いと思います!
CodeIgniter の XSS 対策はどうあるべきか? では、ビューでの変数をデフォルトで HTML エスケープするという実装案を示しましたが、それだけで XSS 対策が完了するわけではありません。 今回は、現状の CodeIgniter でどのような XSS 対策をすればいいかについて考えてみます。なお、実際のサイトでは、入力値のバリデーションも必須ですが、ここでは割愛してます。 なお、CodeIgniter 標準の XSS フィルタに対する私の考えは、CodeIgniter ユーザが CodeIgniter の XSS フィルタについて知るべき 5つのこと に記載しています。 XSS 対策として以下のすべてを実施します。 CodeIgniter の文字エンコーディングは UTF-8 にする HTTP レスポンスヘッダの文字エンコーディングを正しく指定する HTML の属性値はすべて
スパイスラボ神部です。 以前、CakePHP で Basic 認証のやりかたについて書きました(CakePHP 1.2 の Basic 認証設定があまりにも簡単すぎる ( ラボブログ ) )。この方法はたしかに簡単なのですが、アカンと/パスワードの組み合わせを beforeFilter などにハードコーディングしなければならないという状況がありました。 そこでちょっと考えてみてください。もし AuthComponent を使ってユーザ管理を行っている場合、ここで使っているユーザIDとパスワードを上手に使って Basic 認証などの認証を上記のような Security コンポーネントの取り回しをすることができれば、サイトの可能性がもっと広がるかもしれません。例えば、OpenID の認証なんかをうまくハンドリングすることが出来るかもしれません。今回はそのやりかたの基礎的な部分についてかんたんに
CodeBook.phpが内部的に使用しているphp-mcryptは、PHP 7.1.0 で 非推奨 となり、 PHP 7.2.0 で削除されました。 コメントと更新履歴はCode Book Archive - ゼロと無限の間のログへどうぞ。 PHPはphp-mcryptさえあればいろんな暗号アルゴリズムを使えるけど、いざやろうとすると意外に面倒。特に、Javaなど他のアプリやツールとやり取りするときとか。 IVやパディングについて考えるのは大したことではないと言えばそれまでだが、毎回チョコチョコ書くのはちょっと手間。パディングがPKCS#5の場合なんか特に。 なので手軽に暗号化と復号ができるクラスを作った。(要php-mcrypt。) クラス名はサイモン・シンの力作、暗号解読にちなんで。 この本によれば、PHPによる暗号化はCODEではなくCIPHERだそうだけれど。 <?php req
セキュリティについて、みなさん開発者なら当然細心の注意を払って開発を行っているとは思います。しかし、システムを利用する側の多くのユーザは、システムをある程度信頼し、IDとパスワードがかかっていれば大丈夫などと思いがちです。 そのため、パスワードに覚えやすいものや、入力しやすいものを設定する人も多いのが現状です。しかし、そういった単純なパスワードは「ブルートフォースアタック」と呼ばれる、辞書ファイルなどからの総当り攻撃に非常に弱いといった問題があります。そこで、PHPのCrack関数の出番です。 Crack関数とは、PECLとして提供されており、パスワードの「強度」を試すためのCrackLiライブラリが使用可能となります。 ユーザがパスワードを設定する際に、パスワードの強度をチェックすることができます。 それでは、早速試してみたいと思います。今回の環境は、CentOS5、PHP5.1.6、c
(2009/02/15 17:20)「個人的な感想」を追記しました。また、下記はPHP5.2.1以降の挙動です。PHP5.2.0以前のmb_check_encodingは更にカオスなので、あまり使い物にならないと思います。 (2009/02/16 12:30)追記2:バグっぽいと思った件は本当にバグで、修正がhttp://news.php.net/php.cvs/56276の通り取り込まれました。PHP5.2.9から修正される予定です。 (2009/02/22 16:20)追記3:他のエンコーディングについても調査しました。「(その2 EUC-JP編)」と「(その3 UTF-8編)」も合わせてご覧下さい。 PHPのmb_check_encoding関数が一体何のチェックをしているのか、エンコーディングごとに一通り調べてみます。 まずはSJISとSJIS-win(CP932)について調べてみ
(Last Updated On: 2018年8月13日)これから紹介する脆弱性はPHP 5.2.6で修正されています。修正された、とは言え注意が必要です。 PHPは古くからシェルコマンドとシェル引数をエスケープ処理する為に、escapeshellcmd関数とescapeshellarg関数を提供しています。 この関数はマルチバイト文字にも対応しているのですが、ビルドや環境によっては対応できていないときがあります。 escapeshellcmd/escapeshellarg関数ではC99で定義されてるmblen関数を利用しています。一般的なUNIX系システムではmblen関数は利用可能でると考えられるので、問題となる事は少ないと思いますが、PHPではphp_mblenマクロが以下のように定義されています。 #ifndef HAVE_MBLEN # define php_mblen(ptr,
PHPで使えるCAPTCHA画像作成ライブラリはいろいろあって分かりにくいので以下にまとめてみました。 最近ではスパムが多すぎて、掲示板等へのCAPTCHA実装は必須のように思えます^^; CAPTCHA (GPLライセンス) サンプル利用方法 1. パッケージダウンロード 2. パッケージ解凍後、同じディレクトリにフォント(*.ttf)ファイルを設置 3. captcha.class.php を開く (2)で配置したフォントのファイル名を変数に設定 $this->Font = './〜.ttf'; 4. example.php にアクセス CAPTCHA 2 (GPLライセンス) サンプル利用方法 1. パッケージダウンロード 2. パッケージ解凍後、同じディレクトリにフォント(*.ttf)ファイルを設置 3. captcha.class.php を開く (2)で配置したフォントのファイ
_ 残り容量が数十Mバイトになっていた PCがなんかくそ遅いなーと思ってふと空きディスク容量をみたら、残り数十Mバイトまで減っていた。Folder Size for Windowsで各ディレクトリ単位のディスク使用量をながめてみたところ、 Thunderbirdでimapでアクセスしているアカウントのデータフォルダに、なぜか1GバイトオーバーのINBOXファイルがあった。なにこれ? 削除したけど別に動作には支障はなし。 puttyのlogが無限に追記されたよ……。数Gバイト。 昔ダウンロードしたCD/DVD-ROMのisoイメージファイルが、そこかしこに消されず残ってたよ。10Gバイトオーバー。 あと、細かいテンポラリディレクトリの中身とか消したら、30Gバイトくらい空いた。そこまでやって久しぶりにデフラグを起動したら、表示が真っ赤(ほとんど全部断片化されている)だったので、最適化実行中。
freshmeat.net: Project details for KCAPTCHA KCAPTCHA provides CAPTCHA (a visual human validation tool) with font distortion. It requires no PHP font libraries (only GD). PHPでグニャグニャCAPTCHAを作成する「KCAPTCHA」。 PHP+GDによって次のような画像を生成し、プログラムに組み込むことが出来ます。 フォントライブラリは不要でGDで動く模様。 PEAR::Text_CAPTCHAというライブラリも存在しますが、こちらで描画するのと違った感じのグニャグニャ&カラーな画像が作れます。 関連エントリ Captcha画像を提供してくれる:Captcha.jp CAPTCHA画像を作成してくれるサービス
(Last Updated On: 2018年8月20日)問題:まちがった自動ログイン処理の解答です。このブログエントリは最近作られたアプリケーションでは「問題」にしたような実装は行われていないはず、と期待していたのですがあっさり期待を破られたのでブログに書きました。このブログの方が詳しく書いていますけが「Webアプリセキュリティ対策入門」にも正しい自動ログイン処理を書いています。 参考:自動ログイン以外に2要素認証も重要です。「今すぐできる、Webサイトへの2要素認証導入」こちらもどうぞ。HMACを利用した安全なAPIキーの送受信も参考にどうぞ。 間違った自動ログイン処理の問題点 まず間違った自動ログイン処理を実装しているコードの基本的な問題点を一つ一つ順番にリストアップします。 クッキーにランダム文字列以外の値を設定している クッキーにユーザ名が保存されている クッキーにパスワードが保
JamesDam.com ? AJAX Login System Demo This is an example of a login system that does not require page refreshes, but is still very secure. Ajax+PHPでの画面遷移なしのログイン画面作成サンプルが公開されています。 フォームに、user1, pass1 を入力すると即時認証が行われ、次のようにログイン状態になります。 認証には、Ajaxを使ったワンタイムパスワード方式が使われます。 具体的には、Ajaxでサーバからチャレンジコードを取得し、チャレンジコードとパスワードをmd5でハッシュして、更にその値をサーバに送信し、認証を取ります。 このため、従来の方式よりは安全な認証が可能となります。 Ajaxが出てきたことで、ブラウザを開いたままの状態でインタ
いまや、デザイナーですら、phpを使う時代になった。猫も杓子もphpである。以前は、「htmlが書けなきゃwebデザイナーじゃないよね」と言われていたのが、次第に「cssも書けなきゃ」「JavaScriptぐらい読めなきゃ」「phpを使えなきゃ」と、敷居があがってきた。webデザイナーの人たちも大変である。 phpは、確かに手軽に使える言語であり、いままでプログラミングに携わったことのない人であっても少し勉強すれば簡単なプログラムが書けてしまう。まして、C++やJavaで鍛えあげられたプログラマなら見た瞬間使えると言っても過言ではない。 しかし、セキュリティを確保することはそう簡単な問題ではない。このたび、ソシム株式会社から発売になった「PHP サイバーテロの技法 攻撃と防御の実際」(asin:4883374718)だが、この本は素晴らしい。現状知られているメジャーな攻撃方法14種類につい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く