2012/03/15
2012/02/28
ネットを利用するときに気をつけたいこと
こんにちはこんにちは!!
昨日、こんな記事を見かけたよ。
» コドモのソーシャルネットワーク事情〜親ならこれだけはやっておけ
なるほど、いいこと書いてあるし、わかりやすい。
そんなわけでぼくも、
「ネットを利用するときに気をつけたいこと」について、自分なりに思うことを書いてみるよ。
情報は紐付く
ちょっとした情報を元に、
ネットAとネットBが紐付くのはもちろんだし、
リアルの情報まで紐付くこともよくあること。
ひとつひとつは大したことない情報でも、
情報が紐付くと、さらに色々なことが芋づる式に誰かにわかるよ。
過去と現在が紐付く
今は、君のことを気にかけているのは
まわりの友達だけかもしれない。
けれど情報は残る。
将来、5年後、10年後…、
君がうっかり書いた言葉が、たまたま炎上した時、
犯罪者のようなレッテルとともに、過去の全てと、紐付いたリアルの情報を、大勢の人に晒されることになる。
削除しても永遠に残る
一瞬でも公開したものは、誰かのPCや携帯やサーバーに残る。
ネット上で削除ボタンを押しても、もう遅いよ。
写真は10万人の目で検分される
わずかに見える景色を手がかりにして、場所を特定されることもよくあるよ。
日本中、世界中にいる10万人の名無しさんにかかれば、わけのないこと。
時として世界中の名無しさんは、君を特定し、攻撃するために団結する。
身内だけに公開したつもりになってる
ぼくのツイッターから引用するよ。
前にも書いたけどもう一度言うよ。今のツイッターは「この発言をどこかにまとめられたら困る」ことは書かない方がいいね。
これは全ての人に言えることだよ。君のTLはたとえ10人しか繋がってなくても「知る人ぞ知る秘密基地」ではない。発言は「自分自身が晒している」のを自覚しないといけない
公開したつもりのない情報ですら紐付くことがある
たとえば一時期、mixiで登録メールアドレスでアカウントを検索する機能がついたことがあったよ。
登録メールアドレスなんて、非公開だと思ってたんだよね。みんな。
メアドをきっかけに夜の仕事(例えば娼婦)と、mixiでの活動(例えば主婦)が繋がった。
なんて人もいたかもしれない。
Amazonでもあったよね。メアドがわかれば本名がバレるってやつ。
これについては、本名で使うものと、本名は使わないものでメールアドレスを分けて、ぼくはつかってるよ。
(参考) メールボックスをスッキリさせたい
上のリンクに、そうしないことの危険性も書いてあるから、暇な時に読んでみてね。
全てにおいて言えるのは、
自分が出す情報がどこに紐付くのか、想像力を働かせて、きちんと制御することかな。
送信ボタンを押す前にね。
(ちなみにぼくがシステムの設計者なら、送信ボタンどころか一文字入れるごとにサーバーに情報を送信するけどね)
でも、つい余計なこととか書いちゃう時もあるんだよね。
愚痴のひとつも吐けないツイッターなんて、しんどいだけだよ。
だから特にネットに慣れていない人は、とりあえず「本名はどこにも公開しない」ってことだけでもした方がいいと、ぼくは思う。
あるいは慣れてきたら、仕事やリアルで繋がっている相手向けの大人しいアカウント(本名)と、
普段使い用のアカウント(ニックネーム)を完全に切り分けて使うのも良いかもしれない。
例えば、君のことを一方的に気にしている学校や職場の誰かが
こっそり君の名前で検索して、色々とプライベートな事や悩み事を知る…、
なんて、本当によくある話だよね。
本名の大人しいアカウントは、そういう相手向けのダミーとしても機能するから、
うまく切り分けて運用できるならおすすめかな。
そういえば、ネットは全て実名制にしよう!なんて人がたまにいるけど、
あれは情報を扱うことに関して、ものすごく上級者向けのやり方だと思うよ。
だって本名で炎上して、それが広まったら、もう逃げ場がないでしょう?
そんな人生までかけて、やるもんじゃないよ。ネットなんて。
犯罪自慢とか、悪い事しなきゃいいだけだって意見もあるけど、
普通に自分の意見をつぶやいただけで、知らない誰かに憎まれることもザラにあるんだよ。
ネットを使うコドモ達も、こういったことに想像力が働くように
みんな育っていけばいいなーと、ぼくは思うよ。
(あわせて読みたい関連記事) 本名バレてもへっちゃら?
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を使っている人が多い時間帯を狙って…
などとtwitterに流すことによって、
下手をするとブラクラで人が死ぬ。
…というのを考えてみたんだけど、
やっぱり技術は善いことに使うべきだと思い直しました!!!
だから防犯ブザーをつくってみたんだよ☆
暴漢に襲われた時に使ってくださいね!
iPhone用防犯ブザー: http://hamachiya.com/junk/iphone/a.html
(追記) Android だと開くだけで自動再生するそうです。べんりですね。
2012/01/24
ぼくにとってのゲームのモチベーション
こんにちはこんにちは!!
ゲームのモチベーションについて思ったことを書いてみようと思います!
最近ほら、特にソーシャルゲームまわりとかで
ゲームのモチベーションについての色々な意見がでてるよね。
ハマる要素、そして課金したくなる要素とは…! みたいな。
で、色々な人が色々なこと言ってる。
「ランキングで上位にいくため」とか、
「着飾りたい」、「俺TUEEEEEしたい」、「認められたい褒められたい」、
「つまり承認欲求だ!」とか、
色々いわれてるよね。
でも、ぼくにとって、ゲームのモチベーションっていうのは、
「タスクの消化」につきるように思えるよ。
『 (心の中の) タスク表から、すべてのタスクリストを消したい』
ぼくは、だいたいこれがすべてじゃないのかなぁ、って。
普通のゲームなら…
・未踏の地を調べる
・すべての宝箱をひらく
・パラメータを上限まで上げる
・最強の武器を手に入れる
・エンディングをみる
こんな感じだよね。
これらぜんぶ、ぼくにとっては消化すべきタスク。
エンディングそのものをみたいからじゃなくて、
「エンディングをみる」というタスクを消化したいからそれをやってる。
これってたぶん昔からゲームを作ってる側の人にとっては、当たり前すぎることかもしれない。
言い換えれば「魅力的な目標設定」だもんね。
そしてその本質は、ソーシャルゲームになっても変わらないと思う。
たとえばRPGなら最強の戦士の育成や、RTSなら最強の軍隊を作ることと同じように、
カードバトルなら「最強のデッキの構築」っていうのがあるんだけど、
それらにしても、作ったあとの「蹂躙」はオマケに過ぎなくて、
「最強を作り終える」というタスクの消化の方が、ぼくにとっては大事かな。
ゲームセンターの対戦格闘ゲームにしたってそう。
勝つことそのものよりも、
「相手と良い闘いができるくらいの技術を身につける。やりこむ。ゲームを全て知る」ってタスクの方が大事だった。
これまで色々なネットゲームやソーシャルゲームにハマってきたし、
GREEやモバゲーのカードゲームでたくさん課金もしたんだけれど、
どれもこれも、決して「俺TUEEEEE」をやりたかったわけじゃなかったんだよね。
ただ、積み重なるタスクを全て消化してスッキリしたかっただけ。
そしてそれが楽しかった。テトリスみたい。
みんなはどうだろう?