ぼくはまちちゃん!(Hatena)

2012/02/15

5分でできるPHPセキュリティ対策

こんにちはこんにちは!!
Webプログラミングしてますか!

よく「PHPはセキュリティがダメ」とか言われてるよね。

でもそれって、べつにPHPが悪いんじゃなくて、
たぶん、セキュリティとかが、まだよくわからない人が多いだけなんじゃないかな。

がんばって勉強しようと思っても、なんだか難しい理屈が並んでいたりするしね…。


なので今日は、セキュリティ対策について、
「これだけやっとけば、わりと安全になるよ」ってことを、初心者むけに、大雑把に書いてみます!

理屈がわからなくても、最初はコピペでも、
なにもやらないより、やったほうがきっとマシになる!


1. XSS対策

動的なものを表示するとき、全部エスケープすればokです!

(NG) あなたの名前は <?= $name ?> ですね!

(OK) あなたの名前は <?= htmlspecialchars($name, ENT_QUOTES) ?> ですね!

これだけ。
ただし全部やろう! 忘れたところがセキュリティホールになるよ。

あと初心者のうちは、たとえ htmlspecialchars を使っても
JavaScript、CSS、htmlの属性部分(※)には、原則として動的なものを埋め込まないようにしようね。
※<div<?= htmlspecialchars($data, ENT_QUOTES) ?>> ←こういうことしない

※※あと文字コードはUTF-8を使おう。 どうしてもそれ以外を使いたいひとは、ここ参考に



2. SQLインジェクション対策

動的なSQLを使うとき、プリペアドステートメントをつかえばokです!


(NG) $res = $mdb2->query('SELECT name FROM users WHERE id=' . $data);

$sth = $mdb2->prepare('SELECT name FROM users WHERE id=?');
$res = $sth->execute($data);

がんばって自分でエスケープしようとしないで、
こうしておけば、あとはDBがうまくやってくれるよ!



3. CSRF対策

これについては簡単なコードを書いてみたよ。

EasyCSRF

20行くらいなんでコピペしたり、眺めたり、改造したりして使ってみてね!



4. クリックジャッキング対策

.htaccessファイルに次の一行を書くだけ。

Header set X-FRAME-OPTIONS "DENY"

もしレンタルサーバーなどで上のやり方ができない・エラーになる時は、
PHPでhtmlを出す前のところに次のように書く。

header('X-FRAME-OPTIONS: DENY');

これだけで、そのページは、
他のページのiframe内に表示されなくなる = クリックジャッキングできなくなるよ。


はい、おわり!
難しいことしなくても、これだけで全然セキュアになるよ!

簡単な理屈を知りたい人はこっちも読んでみてね → セキュリティまんが

↓あとたぶん、この記事のブックマークコメントにも、セキュリティの偉い人の指摘がずらずら並ぶと思うから、気が向いたら参考にしてみよう!



2012/01/26

ぼくの考えたすごいブラクラ

こんにちはこんにちは!!
今日はiPhoneのちょっとしたメモです!


まずはデモ。
スマホで見るといいかも?→ http://bit.ly/wbKXXG


・iPhoneのSafariはaudio要素が使える
・audio要素はブラウザ上で音声を再生できる
・iPhoneだとマナーモードでも音声を再生する
・ただしiPhoneで自動再生はできない
・そのかわりクリックイベント経由などで再生することはできる


ということは…

うまくクリックを誘発するような画面をつくり (バッテリー警告そっくりのダイアログ出すとか)
人に聴かれては困るような音声を埋め込んでおき
・電車の中などでiPhoneを使っている人が多い時間帯を狙って…

【拡散希望】 RT @Hamachiya2 これすごいよ!iPhoneユーザー必見!! http://bit.ly/wbKXXG

などとtwitterに流すことによって、
下手をするとブラクラで人が死ぬ。


…というのを考えてみたんだけど、
やっぱり技術は善いことに使うべきだと思い直しました!!!

だから防犯ブザーをつくってみたんだよ☆
暴漢に襲われた時に使ってくださいね!

iPhone用防犯ブザー: http://hamachiya.com/junk/iphone/a.html


(追記) Android だと開くだけで自動再生するそうです。べんりですね。


2012/01/24

ぼくにとってのゲームのモチベーション

こんにちはこんにちは!!
ゲームのモチベーションについて思ったことを書いてみようと思います!

最近ほら、特にソーシャルゲームまわりとかで
ゲームのモチベーションについての色々な意見がでてるよね。
ハマる要素、そして課金したくなる要素とは…! みたいな。

で、色々な人が色々なこと言ってる。

「ランキングで上位にいくため」とか、
「着飾りたい」、「俺TUEEEEEしたい」、「認められたい褒められたい」、
「つまり承認欲求だ!」とか、
色々いわれてるよね。

でも、ぼくにとって、ゲームのモチベーションっていうのは、
「タスクの消化」につきるように思えるよ。

『 (心の中の) タスク表から、すべてのタスクリストを消したい
ぼくは、だいたいこれがすべてじゃないのかなぁ、って。

普通のゲームなら…

・未踏の地を調べる
・すべての宝箱をひらく
・パラメータを上限まで上げる
・最強の武器を手に入れる
・エンディングをみる

こんな感じだよね。
これらぜんぶ、ぼくにとっては消化すべきタスク。

エンディングそのものをみたいからじゃなくて、
「エンディングをみる」というタスクを消化したいからそれをやってる。

これってたぶん昔からゲームを作ってる側の人にとっては、当たり前すぎることかもしれない。
言い換えれば「魅力的な目標設定」だもんね。
そしてその本質は、ソーシャルゲームになっても変わらないと思う。

たとえばRPGなら最強の戦士の育成や、RTSなら最強の軍隊を作ることと同じように、
カードバトルなら「最強のデッキの構築」っていうのがあるんだけど、
それらにしても、作ったあとの「蹂躙」はオマケに過ぎなくて、
「最強を作り終える」というタスクの消化の方が、ぼくにとっては大事かな。

ゲームセンターの対戦格闘ゲームにしたってそう。
勝つことそのものよりも、
「相手と良い闘いができるくらいの技術を身につける。やりこむ。ゲームを全て知る」ってタスクの方が大事だった。

これまで色々なネットゲームやソーシャルゲームにハマってきたし、
GREEやモバゲーのカードゲームでたくさん課金もしたんだけれど、
どれもこれも、決して「俺TUEEEEE」をやりたかったわけじゃなかったんだよね。

ただ、積み重なるタスクを全て消化してスッキリしたかっただけ。
そしてそれが楽しかった。テトリスみたい。

みんなはどうだろう?




2011/11/29

ソーシャルゲームがパチンコよりも優れている理由

こんにちはこんにちは!!

最近テレビCMすごいですね…!
GREEとかモバゲーの携帯向けゲームの。

いわゆるソーシャルゲームと呼ばれているやつですね!

でもこれ、はてなブックマークや2chみたいな「ネットに強い人たち」が集まる界隈だと、
だいたいちょっとバカにされて(?)いるんだよね。

「情報弱者から搾取してる」
「あんなものパチンコと同じだろう」
「無料で釣って騙してる」
「遊んでる側も、作ってる側もクズみたい」

こんな意見をよく見かけるよ。

うん、よくパチンコと比較されて「同じような悪いもの」とされている気がする。

それでぼくも似たような感覚を持っていたんだよね。
たしかに今は儲かるんだろうけど、
ああいうのは、なんとなく良くないものなんじゃないかなぁって。

それで、先日、友だちのzakiさんと飲みにいった時のこと。
たまたまその話題がでて、
ぼくが「パチンコと似ている」ってことを言った時に
興味深い話が聞けたので、ちょっと書いておきますね。

曰く
違う、パチンコよりもずっと良いものだよ」と。

以下、ぼくがどうして?と聞いた時の答えなんだけど、妙に感心したよ。
言われてみれば、すごくあたりまえのことなのかもしれないけれど。

はまち:え、どうして?
zaki:パチンコはさ、(店が) 儲かった金が闇に消えるだろう?
はまち:そんなきがする
zaki:ソーシャルゲームの場合は、仮にも上場しているそれなりの企業がやっているわけだから、
 あれで儲かった金は、ちゃんと税金として国に納められるんだよ。
 それに、金が闇に消えずにちゃんと回る。金が回れば景気も良くなる。
 それがパチンコよりもずっと良い理由

はまち:なるほど!

確かにその通りだなーと思った。

あとついでに、いま勢いのある業界が、腕の良いWebエンジニアを奪い合うことによって、
巡り巡って、ぼくたち、ふつうのWebエンジニアの価値と給料もあがるかもしれないしね。




2011/10/05

こういうiPhoneグッズが欲しい

こんにちはこんにちは!!
こういうiPhoneグッズが欲しいのです。

iPhoneのスピーカーの音をさえぎるフタ


あやしい目的じゃなくて、
ごはん撮るときとかに、普通に気を使うときがあるから。




(関連エントリー)
ついに我が家にも無線LANを導入しました! 『ついに我が家にも無線LANを導入しました!』のブックマークコメント