2015年5月15日金曜日

【仕切り直しの第一回】ど素人がWebサービスを立ち上げるまで何日かかる?:SQLインジェクション対策

こんばんわ。ご無沙汰です。

最近ちょーっとバタバタして(仕事で忙殺+頭に大怪我+五月病)、更新とまっておりました。

この「ど素人がWebサービスを立ち上げるまで何日かかる?」シリーズ、連載とか言いつつ、結局2回でストップ。
三日坊主も裸足で逃げ出すほどのいい加減っぷりでした。てへ。

で、もう本人もそんな存在を忘れていた頃、社命で一つWebサービスを立ち上げることになりまして、慌てて勉強を再開した次第でございます。

まあ、とは言っても、壁の中(社内LAN)での簡単なWebアプリなら作った経験はございまして。プロトタイプは比較的すいすいっと作れたんですが、・・・それを外に公開するとなると、話は全く別物。

  • セキュリティどうすんの?
  • なんとかインジェクションとかクロス・・・なんとかやら、攻撃手法はいっぱいあるみたいだけど、具体的にどうやって防げばいいん?
  • 公開したらログから怖くて目がはなせないよう!

・・・知識として知ってはいても、それらに実際に対処するとなるとガクブルです(へたれ)。

まあ不安がっててもしょうがないのよね。
どうやったらいいかわからなかったら、お勉強すればいいじゃん。
ということで、IPAの「安全なウェブサイトの作り方」からテキストをダウンロードして、お勉強しながら、へーはーふーんと、修正してみることにしました。

テキストはPDFでダウンロードできました。べんりー。


・・・まず手をかけたのが、SQLインジェクションへの対策。
ワタクシ本業は物書きでございますので(こう見えても)、知識として知っているつもりではありました。
でも所詮、知識は知識。
どうしてそんなに怖いのか、テキストの実例を見るまではピンときませんでした。

で、テキストに「脆弱な実装」として書かれているのが、例えばこんなの。

$query = "SELECT * FROM usr WHERE uid = '$uid' AND pass = '$passh';
・・・へ?これ脆弱なの?だってネットにあるサンプル、だいたいこんなんだよ・・・
でもテキスト様曰く:
「・・・$uidに悪意あるSQL文が形成される値が指定された場合、SQLインジェクション攻撃が成功してしまいます。」
・・・えーと・・・攻撃されるとどうなんの?
「たとえば、ユーザIDに「taro'--」という文字列が与えられた場合、(略)ハイフンの繰り返し「--」は、それ以降の内容をコメントとして無視させる意味をもちます。このため、この文字列が与えられた場合、データベースは「' AND pass = eefd5bc2...」を無視します。」
・・・。
!?
えっ、それって、太郎さんのパスワード知らなくても、「SELECT *」で太郎さんの情報全部とれちゃう・・・の・・・?
太郎さんのパスワードはおろか、太郎さんのあんな情報もこんな情報も筒抜けになってしまうってこと?
怖い!!・・・ハイフン二つで太郎さん丸裸!!怖すぎる!

これ読んでから、プレースホルダを使って後から変数を当てはめるよう、慌てて全部のSQL文を修正・・・。
それにしても量が多すぎる・・・しんどいよう・・・しかもただ修正しただけでは動かないところ多いし・・・。

ちゃんと最初からテキスト読んでおけばよかった・・・。

P.S.:
そういえば、今週、メインの携帯をASUS Zenfone 5に変えました。16GB。

モンスターマシンのZenfone 2が発売されたっていうのに、あえて旧モデルをチョイス。
だって、Zenfone 2ってスペックもモンスターなら、大きさもモンスターなんですもの。でけえ。あんなの片手で持ったら疲れちゃうよ。

それに比べるとZenfone 5は、ちょっと大きめではあるけど、なんとか片手で使えるくらいの大きさ。
画面も綺麗だし、写真も綺麗に撮れるし、電池もわりと持つし、わたしゃこれで十分ですわ。
なんてったって、安い。XperiaとかiPhoneとかの半分くらいだもの。それでいて、別に大した違いはないし。

でも、バッテリーが交換できない機種を使うのは初めてで、いつ切れるかハラハラしながら使ってます。ぷー。
(でもおかげでバッテリーを長持ちさせる方法とか調べまくって、やっとまっとうな使い方を覚えました。やたらと充電しちゃいけない。放置プレイはダメダメ、など)



2015年3月3日火曜日

分離されたって、あーた。:Raspberry Piでファイルサーバを構築。sambapasswdが見つからかった件

こんばーんわー。
今日はふと思いついてディスクの空き容量が少なくなってきたので、ファイルサーバを新調することにしました。

数年前に使っていたHPのネットブックにCentOS載せて、外付けのハードディスクくっつけて運用してたんですが。
でも容量が250GBだし、ちょっと物足りないんですよね。
ちょうど先日購入したRaspberry Piもホコリをかぶっていることだし、電気屋さんで安いハードディスク買ってきて、ファイルサーバにしちまおう、と。

戦利品。2TBで一万円ちょっと。まあこんなもんじゃろ。

で、あとはRaspberry Piに外付けハードディスク接続してー。認識自体は無問題ー。
sambaの設定してー・・・。
おっと、そもそもsamba入れてなかった。うふふー。

さくっとインストール・・・しようと思ったらエラー。
どうもパッケージの情報が古かったみたい。コチラの記事を参考にして、「sudo apt-get update」を実行。
よっしゃ。今度は通った。
下の画面は、MacBook AirからVNC使ってRaspberry Piの画面を表示させてるところ。
でも考えてみれば、guiってほぼ使わないし、動作も遅いしで、これ以降はssh経由で作業してました。


で、今度は接続した外付けハードディスクをマウント。
お買い上げ状態ではNTFSフォーマットされてます。
でも、万一Raspberry Piがぶっ飛んだら、Windowsパソコンにでも接続して使えるようにしたい。
というわけで、Linuxのファイルシステムにはせず、NTFSのまま使うことにする。

今度はntfs-3gをapt-getでインストール。
「apt-get install ntfs-3g」でさくっと。いやー、便利だなー。

ここらへんはさくさく進む。webmin入れて〜。sambaの共有フォルダの設定して〜。
そーれWindows機から接続だー!わははははー、らくしょうじゃーん。

・・・。
・・・・・・。あれー・・・?

(じつは本記事のメインはここから。)
何度やっても共有フォルダにアクセスできない。MacBook Airからもダメ。
webminで何度もパスワードの設定をやりなおした。
すでに稼働しているファイルサーバの設定画面を横に並べて、まったく同じ設定にした。
それでも繋がらない。
ユーザ名が存在しないか、パスワードが違うよーって怒られる。
ああ、怒られるのは仕事だけでいいんです。最近怒られっぱなしだから、もういいんですよう。

・・・で、ググっているうちに、「smbpasswdでパスワード設定しないとダメよ?」みたいな情報を見つける。えー・・・。
・・・だってwebminでUnixユーザとSambaユーザを同期するように設定したもん。ちゃんとやったもん。
でもできてないのは確かなので、とりあえずsmbpasswdを実行・・・実行・・・じっ・・k
コマンドがみつかりません
えええええ!
だってさっき、「apt-get install samba」やったじゃん!
パスワード設定ツールくらい、一緒に入れてくれるんじゃないの!?

と思ったら違った。
http://lists.debian.or.jp/debian-users/201104/msg00010.html
「samba-common-binパッケージに分離されたようです。」

。゚(゚´Д`゚)゚。
ぶ、ぶんり・・・って・・・。
半信半疑のまま、「apt-get install samba-common-bin」を実行。
smbpasswd userでパスワードを設定。
う、Windows機からログイン・・・。
・・・。
嘘みたいにあっさり繋がった

えっ、ええー・・・。
前はこんな苦労したことなかったのにな・・・。

教訓:「人間はしばらくやってないことはあっさりと忘れる」

おまけ:
ついでにこんなのも買っちゃった。Raspberry PiはUSBケーブルで給電だし、便利かなって。
最近、この類の製品ふえてますよねー


2015年2月24日火曜日

une histore un peu privee

C'est fini, c'est fini; le boulot d'aujourd'hui est enfin fini.
Moi, dans cette entreprise oû je travaille, ils considèrent que je déteste travailler.

Les Japonais travaillent vraiement dûrs; comme s'ils ont la haîne de la vie privées:
Il y a 20 ans,  je travaille comme un homme de vente. Là bas, si un staff rentre chez lui, par example à 20 du soir, il serait battu au lendemain matin par sa boss, en disant "pourquoi tu as rentré chez toi aussi tôt, si bien que les autres restaient et travaillaient encore?"

C'est fous: mais, C'EST LES JAPONAIS: ... moi, j'en avais marre, mais je restait à cette bureau pendant 4 mois. C'est la raison que je ne veux pas travailler si durement:

merci:



2015年2月19日木曜日

Mais c'est COOL! : OpenStreetMap est devenu un navigateur enfin!

Bonjour, tout le monde!
J'attrappe la grippe et j'ai mal a tete up peu, hehe.

J'aime bien OpenStreetMap, qui est la carte libre comme le wikipedia.
http://openstreetmap.fr/

Ce service de web pocede maintenant la fonction de navigteur de route comme Google Map; c'est super!

J'aimerais bien visiter Lille encore une fois...

2015年2月18日水曜日

【連載第二回】ど素人がWebサービスを立ち上げるまで何日かかる?:お名前.comでドメインをとるのじゃ

はーいこんばんわ。
「明日は何やろっかなー?」とか、ほざいときながら、昨日はサボってしまいました。
だって風邪ひいてたんだもの。ごほげほがほ。

まあ昨晩早めに床にはいって、ぐっすり眠ったら大分良くなりまして。
めでたく今日、連載を再開できる運びとなりました。
・・・別に毎日やんなくてもいいんだけど、うん。

で、前回はConoHaさんでサーバ立てたので、今日はドメインを取得してみました。
でもでもまだ実働じゃないしー。お金ないから安くすませたいしー。
というわけでお名前.comさんを利用することにします。安いから。
だって年間99円からとか、広告ばんばん出てるんだもの。

さっそくトップページにアクセス。
・・・「まずは、ドメイン名を検索してみよう!」はいはい。
くーまーさーんーのーいーうーとーおーりー。

わーい、いっぱいでてきたー・・・。

ど・れ・に・し・よ・う・か・な?
でも、99円のドメインは、「.pw」とか「.red」とか・・・。うーん、いくら「とりあえず」といっても、pwってなんかイメージしにくいなー。
と思ったら、「.link」ってあるじゃないですか。
かっこいい。これにしよう。ポチッとな。
(すでに紙パックワインをしこたま飲んでいるので気が大きくなってる)

年間180円。うん。安いよね。Whois情報公開代行もおねがいしますよっと。

支払いは、コンビニ払いにしました。しかし、コンビニ手数料と登録料がほぼ同じ、っつーのもなんだけど、まあ酔っ払ってるからいいや。あはははは。

さて、今日はここまで。
次回は(明日とは言わないw)、サーバでドメインの設定をしようかな。

2015年2月16日月曜日

【連載第一回】ど素人がWebサービスを立ち上げるまで何日かかる?:まずサーバよね。ConoHaの無料クーポン使おう

はいこんばんわ。ど素人でえす。

もともと片足突っ込んでたとはいえ、この一年、サーバー管理だのアプリ開発だの、ゼロから独学で始めて突っ走って参りました。
もうここまできたら行くところまでいっちゃえ、ということで。
そろそろWwbサービスを立ち上げることにしました。

(アプリも単体じゃ採算もなにもあったもんじゃないですしねー)

まあ、なにはともあれサーバでしょ。
でも、普段実稼働してる自社サーバでいきなり試すなんて怖い。
なんかトラブルがあったら、実務にガツーンと影響出ますしね。どうせ対応・復旧するのは自分だし。
これ以上、休日にサーバのことを気にしながらコドモと散歩するのは嫌だ(本音)。

というわけで、先日「オープンソースカンファレンス  2015 Hamanako」で頂いてきた、ConoHaさんの三千円分無料クーポンを投入してみます。


ConoHaさん太っ腹だぁ・・・。
ちなみにこちらが一緒にもらった薄い本。

うふふ。二巻か三巻あたりからよんでみよっかなー。

・・・本題本題。
まずはConoHaのアカウントを作成して、ログインします。
アカウント作成時に、電話認証が必要になるので注意。でも自動音声による案内だったので、とくに問題なくクリア。

で、コントロールパネルから、[アカウント] > [クーポン]の順に選択。

「クーポンを登録」をクリックして・・・

クーポンコードを入力。で、[確認]をクリック。
わーい。

とりあえずこれで、無料でサーバを立てる準備はオッケー。次はVPSを作成せねばなるまい。

[サービス] > [VPS]の順に選択し、・・・

[VPS追加]をクリック。
とりあえずお試しなので、プランとrootパスワードの他は、あんまり選ぶところはないなー。
シンプルでええこっちゃ。



で、作成後、しばらく待ってると、「準備ができたでー!」とメールが届きます。
たぶん30分もかからないくらい。

やった、ぼくにもできたー。

さーて、明日は何をやろうかなー。



2015年2月14日土曜日

きたきたきたー。:GitHubからAndroid Studioにプロジェクトをチェックアウトしてみた

みなさんこんにちは!
今日は日本Androidの会浜松支部の定例会にきています!

今日のお題は、「Android Studio」。
そろそろ開発環境もAndroid Studioにシフトしないとまずいよねー、ということで、勉強会に参加です。

勉強会そのものはAndroid Studioのインストールなど環境構築から始まったのですが、私は前回すでに環境構築すませてたので、らくちんらくちん(遅刻もこれでとりもどした)。

で、HelloWorldもなんなく実機で動作しました。
ケーブルでMacBook Airにさして、そのままRunするだけ。
・・・なんか、Windows 8であれだけ苦労したのが嘘のよう。

で、お次は・・・。支部長さんがOpenStreetMapを表示するサンプルアプリを作ってきて頂いたので、それをAndroid Studioにインポートして動かしてみよう、と。
ソースコード自体はGitHubにあるらしい・・・。

まずは既存のプロジェクトを全部閉じて、「Checkout project from Version Control」を選択します。

で、「GitHub」を選択。

GitHubへのログインが必要になりますよー。
ログインできたら、「Vcs Repository URL:」にプロジェクトのURLを入力、「Clone」をクリック。

・・・えええええ!?の、No files are ...?

あ、開いてないだけだった。画面左から適当に開けばオッケー。

・・・わーい。
これで幸せになりましたー。
Macbook Airで開発ってのもらくちんでいいですねー。