今日から5月。 そしてゴールデンウィーク目前。
来年からゴールデンウィークという名称が変わるらしい? 5月4日が「みどりの日」となり、政府も省エネに取り組んでいるらしく、「グリーンウィーク」という名称になるとか、ならないとか……ラジオで言っていた。 省略形の「GW」というのは変わらないらしいけれど。 まぁどうでもいいけれど……
話は変わってPCのこと。
契約しているさくらサーバーのドメイン管理で、エイリアスを設定するとサブドメインを作れる。 メールアドレスもサブドメインが作れるのかと思ってやってみたら「[email protected]」のようなサブドメイン入りのメールアドレスが作成できた。 作成できたというか、renraku@ユーザーId.sakura.ne.jpに届く。
しかし受信するときにそのサブドメインのみを受信しようとしたけど、やり方がわからなかった。
受信するときに[email protected]で受信して、送信先でフィルターをかけるのがいいのだろうか。
受信するときのユーザーIDを「[email protected]」にしても「[email protected]」のメールが受信できてしまう。
か「[email protected]」自体にフィルターをかけて、受信したらプログラムを起動して、あて先によって別の場所に転送するようにすれば、個別に受信するようにすることはできるけれど…… 転送の数だけメールアドレスを切らないといけないので面倒だ。
メーラーでフィルターかける方法でいいか……
「パソコン」カテゴリーアーカイブ
携帯サイト
携帯サイトを作りたいのだけど、やっぱり文字コードはSJISで作るべきなのだろうか。 個人的にはUTF-8で作りたいのだが、2G以前の携帯は全ての機種がUTF-8をサポートしているわけではないらしい。
PHPをUTF-8で作るので、ページもUTF-8だと楽なんだけどなぁ……
まだしばらくはSJISの時代が続くのだろうか。
OpenPNE脆弱性
OpenPNEの脆弱性が見つかった。
該当するバージョンは1.8~最新版までなので、ほとんどが対象だ。
さっそく該当する箇所のソースを見て見た。 なるほど。
ユーザーエージェントを携帯にしてSNSのトップページを見ると、携帯用のログイン画面が表示される。
何も入力しないで「ログイン」ボタンを押すとエラーになる。
で、URLの引数にID=○(○はc_member_idを指定)を追加。 で、URLをo_login2.phpに変更する。 そのページを表示すると……同じログイン画面。 しかしメールアドレス入力欄が消えている。
ソースを見ると、hiddenタグでメールアドレスが記述されている。 c_member_idのところを、好きなメンバーIDにすると、その人のメールアドレスがわかってしまう。
ちなみにメールアドレスが流出するだけで、パスワードはわからないのでログインできない。
こんな脆弱性があったとは。 SNS運営している人は早急に対策をしないとね。
旧fc2SNSに、招待状なしで入会する方法
ちょっと、とあるSNSに入りたくて、だけど招待状がない。
いろいろやってみたら招待状なしで入会できた。
やり方は……
<script type="text/javascript">
<!–
function contentSubmit(){
document.sendform.submit();
}
//–>
</script>
<table>
<form action="http://xxxxxxxx.sns.fc2.com/join_comp.php" method="post" name="sendform" onsubmit="return false;">
<tr>
<td align="center">
<table width="640" border="0" cellspacing="1" cellpadding="3" bgcolor="orange">
<tr>
<td colspan="2" align="center" bgcolor="Gold">▼ 内容を確認後、よろしければ登録ボタンを押して下さい</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> メールアドレス</td>
<td class="datacol">
[email protected] <input type="hidden" name="u_mail" value="[email protected]">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 希望パスワード</td>
<td class="datacol">
11111111 <input type="hidden" name="u_pass" value="11111111">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 氏名</td>
<td class="datacol">
a a <input type="hidden" name="u_lname" value="a">
<input type="hidden" name="u_fname" value="a">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>ハンドルネーム</td>
<td class="datacol">
a <input type="hidden" name="u_hname" value="a">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 在住の都道府県</td>
<td class="datacol">
北海道 / a ※全体に公開 <input type="hidden" name="u_pref" value="北海道">
<input type="hidden" name="u_city" value="a">
<input type="hidden" name="u_city_pub" value="全体に公開">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 出身の都道府県</td>
<td class="datacol">
北海道 ※全体に公開 <input type="hidden" name="u_bpref" value="北海道">
<input type="hidden" name="u_bpref_pub" value="全体に公開">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 性別</td>
<td class="datacol">
男性 <input type="hidden" name="u_sex" value="男性">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 誕生日</td>
<td class="datacol">
1 月 1 日 ※全体に公開 <input type="hidden" name="u_bmonth" value="1">
<input type="hidden" name="u_bday" value="1">
<input type="hidden" name="u_birthday_pub" value="全体に公開">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 生まれた年</td>
<td class="datacol">
2008 年 ※全体に公開 <input type="hidden" name="u_byear" value="2008">
<input type="hidden" name="u_byear_pub" value="全体に公開">
</td>
</tr>
<!–
<tr>
<td class="colhead" width="150" nowrap>血液型</td>
<td class="datacol">
<input type="hidden" name="u_blood" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>職業</td>
<td class="datacol">
※ <input type="hidden" name="u_job" value="">
<input type="hidden" name="u_job_pub" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>所属</td>
<td class="datacol">
※ <input type="hidden" name="u_sect" value="">
<input type="hidden" name="u_sect_pub" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>趣味</td>
<td class="datacol">
<input type="hidden" name="u_hobby_input" value="">
</td>
</tr>
–>
<tr>
<td class="colhead" width="150" nowrap><font color="#FF00FF">*</font> 自己紹介</td>
<td class="datacol">
aa <input type="hidden" name="u_selfpr" value="aa">
</td>
</tr>
<!–
<tr>
<td class="colhead" width="150" nowrap>外部RSSの表示</td>
<td class="datacol">
<input type="hidden" name="ex_rss" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>好きな </td>
<td class="datacol">
<input type="hidden" name="u_favor1" value="">
<input type="hidden" name="u_favor1_val" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>好きな </td>
<td class="datacol">
<input type="hidden" name="u_favor2" value="">
<input type="hidden" name="u_favor2_val" value="">
</td>
</tr>
<tr>
<td class="colhead" width="150" nowrap>好きな </td>
<td class="datacol">
<input type="hidden" name="u_favor3" value="">
<input type="hidden" name="u_favor3_val" value="">
</td>
</tr>
–>
</table>
<br>
<input type="hidden" name="fjoin2" value="fjoin2">
<input type="button" value="登録" onClick="contentSubmit()" onKeyPress="contentCheck()">
</td>
</tr>
</form>
</table>
こんなHTMLを作成して、ローカルでもどこかのサーバーでもいいので、保存して、formのactionを入会したいSNSに変えて、メールとパスワードの部分を任意のものに設定して、「登録」ボタンを押すだけ。
これで招待状のないSNSでもらくらく会員になることができる。
ただし、実行できるのは旧バージョンのSNSのみ。 今、FC2SNSは新バージョンに移行中で、新バージョンではできない。 ちょっと解析して見てが、ユーザー側に入力情報を保存しないように変更されていて、解析が難しいので諦めた。
まぁ「すごい入りたい!」ってSNSがないけれど、とりあえずセキュリティホールということでここに公開。
しかし先日のKAGOYAサーバーの件といい、けっこう大手でも不具合があるんだね。
input、textareaの¥マーク
仕事でやっているシステムで、inputやtextareaに半角¥を入れると、なぜだかバックスラッシュになってしまう。
Firefoxからだと、正常に半角¥が入力される。 IEからだとバックスラッシュになってしまう。 DBにデータを格納するのだが、値自体は半角¥で入っている。 ただフォーム上の表示が……
なぜだろう??
googleをみたら、全く同じ動きをした。 次にYahoo!を見たら、きちんと半角¥が入力できるではないか。
ソースを追ってみたら判った!!
スタイルシートでinputとtextareaのフォントが日本語フォントに指定されている。 明示的に日本語フォントを指定してあげることで解決した。
ドット絵クリエイター
ドット絵を描きたい。 しかしドット絵は難しい。
やっぱり絵を描くとは言わないけれど、これくらいはできたらいいなぁと思う。
ページのワンポイントとしてのアイコンなども簡単に作れるようになりたいし……
しかし、絵画系のものができるようになるのには、新しい言語を覚えるより壁が高そうだ……
KAGOYAサーバー
レンタルサーバーで「カゴヤサーバー」というところがある。
けっこう大きく有名なサーバーではないだろうか?
ここのサーバーで通常では考えられないような不具合がある。
それは、PHPで他人のPHPソースやCGIソース、public_htmlより上のディレクトリのファイル、.htaccessの中身、.htpasswdの中身、DBの自動バックアップファイルなど、全て閲覧することができてしまう。
PHPのソースを入手できるということは、KAGOYAのサービスでインストールすることができる「phpMyAdmin」のconfig.phpのソースも入手することができる。 その中にはDBサーバーへの接続ID、パスワード情報が記述されている。
それでDBにログインすることが出来てしまうので、個人情報を登録してあるサイト(EC CUBEとか)だとあっさり情報が流出してしまう。 当然テーブルの削除も自由自在。
CGIのソースが見られてしまうということは、掲示板などのCGIのパスワードももちろん入手可能。 勝手に人の記事を削除したりすることができる。
さらにパーミッションが777や707のディレクトリのファイルの削除は自由自在。 先ほどの掲示板のログファイルとかも勝手に削除できる。 もちろん勝手にファイルを追加することも出来る。 1GBのプランの人のパーミッションが777か707のフォルダ内に、100MBのファイルを10個作成することも可能。 こんなのはプログラムで一瞬でできてしまう。
PHPのfopen関数やcopy関数を使えばファイルをそのままコピーすることもできる。
通常見られてはいけない設定ファイルとかはpublic_htmlより上のディレクトリにおいて、ブラウザではアクセスできない領域なので、安全なはずなのだが、それさえも崩れる。
どこに置こうが、コピー・閲覧自由自在。
さらにサーバーのhttpd.confファイルやpasswdファイルまで見ることが出来る。 もうこのサーバーはメチャメチャとしか言いようがないね。 こんな仕様のサーバーでよく今まで無事だったのかがとても不思議。
さくらサーバー、チカッパ、ロリポップで同じことを試したけど、当然できなかった。 これが普通なのにね。
ネットワークなどの専門的知識もなく、簡単なPHPのみでこんなことができてしまうなんて、サーバーのセキュリティ管理が甘すぎるとしか言いようがない。
大きな被害が出る前に、対策してくれることを望む。
Smarty
PHPのテンプレートエンジンSmartyではまった。
先日2.6.19がリリースされていたので、それを使ってみることに。
人のFTPからアップロードしてSmarty.class.phpを読み込ませるのに、ファイル名はFTP上のをコピーしてrequireした。
template_dirとcompile_dirを設定して、いざdisplay!
しかし……不思議なエラーが……
コンパイルできないみたいな文面だった。 しかしコンパイルするフォルダを指定されているしパーミッションも正しく設定されている。 なぜだ……
悩むこと10分…… ようやく原因がわかった。
FTPの設定だった。 アップロードしたファイルを強制的に小文字にする設定になっており、
Smarty.class.php
Smarty_Compiler.class.php
が小文字になってることが原因だった。 require.phpはFTP上でファイル名をコピーしたので問題はなかったのだが、内部で読み込むほうに問題があった…… しかしFTPにこんな設定があったとは… 人のFTPを使うときは注意しよう。
てっきり2.6.18から2.6.19に変えたのが原因かと思ってしまった。