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

2012/03/15

2012/02/28

ネットを利用するときに気をつけたいこと

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

昨日、こんな記事を見かけたよ。
» コドモのソーシャルネットワーク事情〜親ならこれだけはやっておけ

なるほど、いいこと書いてあるし、わかりやすい。
そんなわけでぼくも、
「ネットを利用するときに気をつけたいこと」について、自分なりに思うことを書いてみるよ。



情報は紐付く

ちょっとした情報を元に、
ネットAとネットBが紐付くのはもちろんだし、
リアルの情報まで紐付くこともよくあること。

ひとつひとつは大したことない情報でも、
情報が紐付くと、さらに色々なことが芋づる式に誰かにわかるよ。



過去と現在が紐付く

今は、君のことを気にかけているのは
まわりの友達だけかもしれない。

けれど情報は残る。
将来、5年後、10年後…、

君がうっかり書いた言葉が、たまたま炎上した時、
犯罪者のようなレッテルとともに、過去の全てと、紐付いたリアルの情報を、大勢の人に晒されることになる。



削除しても永遠に残る

一瞬でも公開したものは、誰かのPCや携帯やサーバーに残る。
ネット上で削除ボタンを押しても、もう遅いよ。



写真は10万人の目で検分される

わずかに見える景色を手がかりにして、場所を特定されることもよくあるよ。
日本中、世界中にいる10万人の名無しさんにかかれば、わけのないこと。
時として世界中の名無しさんは、君を特定し、攻撃するために団結する。



身内だけに公開したつもりになってる

ぼくのツイッターから引用するよ。

前にも書いたけどもう一度言うよ。今のツイッターは「この発言をどこかにまとめられたら困る」ことは書かない方がいいね。
これは全ての人に言えることだよ。君のTLはたとえ10人しか繋がってなくても「知る人ぞ知る秘密基地」ではない。発言は「自分自身が晒している」のを自覚しないといけない

http://twitter.com/Hamachiya2/status/42463660316172288



公開したつもりのない情報ですら紐付くことがある

たとえば一時期、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を使っている人が多い時間帯を狙って…

【拡散希望】 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」をやりたかったわけじゃなかったんだよね。

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

みんなはどうだろう?