APIとエスケープ/バリデーションとセキュリティ

APIとエスケープ/バリデーションとセキュリティ

今回はセキュリティ対策におけるAPIとエスケープ/バリデーションをどう考えるかの話です。

Cプログラマになろうとしているプログラマにメモリ管理を教えないことは考えられません。メモリ管理を考えなくても文字列の処理をしたりするライブラリなどもありますが、メモリ管理をあまり考えなくても良いAPIさえ使っていればOK、メモリリークもValgrindでチェックしてレポートされなければOK、と考えているプログラマが作ったプログラムが安全である可能性は低いでしょう。

言語やプラットフォームの基本中の基本を避けて通っては安全なプログラムの構築が難しくなるだけです。

安全なプログラムを作るために「プログラマに何を教えるべきか?」が今日のテーマです。

もっと読む

SQLのエスケープ

SQLにエスケープなんて必要ないと考えている方も居るとは思いますが、現実にはエスケープを知っておくことは必須と言っても構わないと思います。

既にSQL識別子のエスケープについては書きましたが、今回はSQLエスケープというよりは安全にSQLデータベース利用する話です。先ずはエスケープの話を全て終わらせよう、と思っているのですがSQLエスケープのエントリが無いので作りました。私のブログを読んでいる方はエスケープ処理、プリペアードクエリの利用方法などはよくご存知だと思うのでここの部分は省略しています。

もっと読む

PHPのJSONのエスケープ

追記:最近のOWASPガイドの更新でJavaScript文字列はUnicodeエンコードで安全性を確保するよう変更されました。元々このブログでもUnicodeエスケープのまま利用するように書いています。他の言語のユーザーはUnicodeエスケープを利用しましょう。PHPもASCII領域の文字をUnicodeエスケープするようにした方が良いと思います。これは提案して実現するように努力します。

JSONはJavaScriptのオブジェクトや配列を表現する方式でRFC 4627で定義されています。メディアタイプはapplication/json、ファイル拡張子はjsonと定義されています。

PHPにJSON形式のデータに変換するjson_encode関数json_decode関数をサポートしています。

JSON関数がサポートされている話は簡単!となれば良いのですが、 いろいろ考慮しなければならない事があります。

TL;DR; PHPのjson_encode()を安全に利用する方法

json_encode()を利用する場合

$json = json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);

と利用します。これでもまだ最適なエンコード方式とは言えませんが、デフォルトとして最低限必要なオプションが

JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT

です。

JSONデータの文字エンコーディングは基本UTF-8です。UTF-8文字データは”予めバリデーションしておく”必要があります

もっと読む

PHP最速フレームワークPhalconのインストール

Phalconを初めて知ったのはもう忘れるくらい昔の話です。今でも活発に開発が行われており、かなり使えるフレームワークに仕上がっています。

Phalconは他のどのPHPフレームワークと違う特徴があります。PhalconはPHPのフレームワークですが、PHPで書かれていません。C言語で書かれています。つまり、PHPのネイティブモジュールとして動作するPHPフレームワークです。

もっと読む

ChatWorkのコピーサイトを調べてみました

ChatWorkをまるごとコピーしたコピーサイトが中国に登場で紹介したように、まるごとコピーしたサイトが現れました。こういうコピーサイトが現れると、内部のソースコードが漏洩したのでは?と不安になる方も居ると思います。調べてみたので参考にして下さい。

ChatWorkの画面
chatwork_capture

コピーサイトのWokingIMの画面
workingim

もっと読む

日経Linux12月号

先月の11月号にOSSEC HIDSの記事を書いたので、次の号の日経Linux12月号も頂きました。
100の初心者から上級者向け(OpenStackなど)Tipsが載っています。

GPS将棋サーバーを作る、ownMdm (MDM: Mobile Device Management)でAndroidスマホのロック&位置取得、DAPPサーバー/DLNAサーバーを導入する、など役立つTIPSが載っています。付録のDVDに記事で利用しているUbuntuが入っているようなので初心者でも直ぐ楽しめるが良いですね。

この他にも電子工作で室温を計測し、グラフ化する記事もあります。これは自宅の温度管理(必要なのかは別にしてただ面白い)やサーバールームがある会社さんではサーバールームの温度管理などにも使えます。学生時代以来、電子工作はしていませんでしたが久々にやってみたくなりました。