旧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">
xxx@xxx.com <input type="hidden" name="u_mail" value="xxx@xxx.com">
</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のみでこんなことができてしまうなんて、サーバーのセキュリティ管理が甘すぎるとしか言いようがない。
大きな被害が出る前に、対策してくれることを望む。

ページ不具合

雨昨日PHP5.2.5にしてから、不具合が出てきた。
require_onceでhttp://から始まるファイルを指定していたら、エラーがでてしまった。
調べたら、allow_url_fopenをOnにすればいいと書いてあったのだが、phpinfoを見て見たらきちんとOnになっている。
さらに調べていたらallow_url_includeをOnにしないといけないらしい。
URL経由でファイルを取得してPHPとして実行するにはこちらをいじるんだって。
PHP5.2.0からの追加らしい。

とりあえず解決。

ブログスパム対策

雨のちくもり最近ブログにものすごい量のスパムコメントが届く。
Word Pressのスパムフィルターで表には出てこないのだが、「コメントがありましたメール」とスパムにひっかかったコメント一覧で削除しないといけないので面倒。

いっそのこと記録すらしないようにしようと対策をした。


wp-comments-post.phpに以下を追加した。
Array

たったこれだけで快適なブログライフになった。

それと今日PHP5.2.5に切り替えをしたのだが、ブログで使ってる作成中のアクセス解析でエラーがでていて1時間くらいブログが見れない状態に……
MySQLクラス部分のエラーだったけど、直すのがめんどいので、とりあえず切ちゃった。

JavaScriptのCookieとPHPのCookie

晴れ夜中に次女が大泣きで起きた…… ミルクをあげたら寝た……
Cookie Manager」というJavaScriptで簡単にCookieを扱うライブラリがある。
JavaScriptでクッキーを扱うのはなかなか面倒だ。 書き込みはいいけれど、読み込みがね…
全てのクッキーが連結された状態で1行で取得されるので、自分で分割して、検索して、必要な部分だけ引っ張る処理を加えないといけない。
それを簡単にやってくれるのがCookie Managerというライブラリ。

これをつかって、クッキーの書き込みや読み込みを簡単に行っていた。
しかし、PHP側でこのクッキーの値を処理して、使い終わったクッキーを削除する処理を加えたのだが、なぜだかクッキーの削除ができない。 削除だけでなく、PHPからは参照のみしかできない。 上書きもできない。

この問題にどっぷりはまった……
考えて考えて……考えて考えて……ようやく原因がわかった。
クッキーのパスの指定がいけないらしい。
Cookie Managerでは、「/」というパスで有効なCookieを作成する。 PHPではPHPファイルのあるディレクトリで有効なCookieを処理しようとする。(/livrersdream/js みたいな)
Cookieをセットするときに、パスも指定してあげて問題なくPHP側で削除もできるようになった。

いろいろネットを見ていたら、Cookieのパスはブラウザに依存するらしい? Firefox2でやっていたのだけど……
「/」の指定だったら、それ以下のディレクトリ全てに有効なCookieが作成されるんじゃないのかな?
まぁ使うディレクトリまで指定することで解決したからいいや。