久しぶりにやらかしてしまいました。
タイトルの通り、mysql_connectで大ハマリしてしまいました。
phpからアクセス時にpermission denied、出たわけですが、このエラーは単に、「権限がないよ」って言っているだけなのです。
DB作成なんて、これまで何回もやってるし、grant文なんて忘れるはずもありません。
しかし、何回試してもpermission deniedが消えなかったのです。
mysqlにrootでログインして、DBの権限の確認を行ったり、変数で指定していたmysql_connect関数に定数で入れてみたりと色々試しましたが解決できず。
30分強悩んで駄目だったので、とりあえず、夕飯を食べに行った(^_^;)
そして、よくあることですが、戻ってすぐ原因判明。
原因は、
違うサーバーにアクセスしていただけだった!
こういう単純なミスってよくあります。
今日は、会社の後輩も、私に聞いてきたことがあって、その内容は、
フレームワークでmodule、actionを指定してブラウザに表示しようとしていたんだけど、何故か表示されない
という内容だった。
見に行って5秒で原因判明。
私「congif.phpになってるよ(笑)」
無論、正しくは、
config
です。お互いケアレスミスには気をつけないとね(^_^;)
前回クロスサイトスクリプティングを
記事にしましたが、今回もクロスサイトです。
・クロスサイトリクエストフォージュリ(CSRF)の事例クロスサイトリクエストフォージュリの事例としてよくあるのが、
不特定の人が書き込む掲示板等にjavascriptを含めたリンク入りの記事を投稿するパターンです。
一時期1pxのiframeを埋め込む攻撃がはやりましたね。
この事例では以下のようなことができます。
他サイトの掲示板に自動で投稿するようなスクリプトを埋めこむ。
ユーザーのcookieの情報を他サイトに転送する。
・どのような対策が必要かクロスサイトリクエストフォージュリには、万能な対策はありません。
対策をするとしたら、
ユーザー側は、誰が書き込んだかわからないようなリンクは、クリックで飛ぶのではなく、URLをコピーして、ブラウザに貼り付けて、URLに問題がないか確認してからページを表示するとよいでしょう。
WEBをよく利用する人は掲示板等で、
「ttp://~」とhを抜いたテキストのURLを見たことがあると思います。
これは、この攻撃を防ぐことができるのです。
サイト運用者の対策としては、リファラーチェックとか、画面遷移でのチケット発行ぐらいでしょうか。
久々にプログラムの話。
クロスサイトスクリプティング(XSS)とは、なんぞ?
PHP初心者やデザイナーさんだと思うかもしれません。
・クロスサイトスクリプティングとは?XSSとは、WEBシステムを攻撃する手法の一つです。WEB制作者は、この対策をする必要があるとされています。
・具体的にどんなWEBシステムでこの問題が発生するか入力フォームに値をいれて、確認画面で入力した内容を確認するようなシステムが主です(他のケースもあります)。
・どんな対策をすればいいか入力値のチェック(バリデート)
不正な入力値の無効化(サニタイズ)
基本この2つです。
PHPだとhtmlspecialcharsという「htmlタグ」、「&」、「"(ダブルクォート)」、「'(シングルクォート、オプション要)」を「>」などに置き換える関数があります。ユーザーが入力した内容を確認画面で表示する際は、基本この関数を使って表示します。
あと、hiddenのvalueに値を入れる場合、
echo '<input type="hidden" name="hoge" value="'.htmlspecialchars($value).'" />
というように、ダブルクォートで括るようにしましょう。
これで、概ね防ぐことができます。
最近のシステムでは、cssを入れられたり、javascript(ajax)を利用するようなシステムも多いので、この辺りもXSS対策が必要です。
・どんな被害をうける可能性があるかcookieと呼ばれる個人のWEBブラウザ(internet explorer等)の情報が盗まれたりします。(他の被害をうけることもあります)
・誰が被害をうけるかサイト制作者ではなく、サイト利用者が直接被害をうけます。サイト制作者も間接的に被害をうけます。
・XSS対策は必要か必要と言えば必要でしょう。ただ、攻撃者は、XSSなんかより、もっと効率がいい攻撃方法を取るでしょうから、あまりXSSは狙われないかもしれません。
WEBシステムを作る際は、XSSだけでなくいろんなセキュリティー対策が必要です。
例えば、
バッファオーバーフロー
インジェクション
パストラバーザル
セッション乗っ取り
クロスサイトリクエストフォージュリ
クロスサイトトレーシング
画面遷移の正当性
などです。共通処理でできる対策はできるだけ共通で処理を行うのが安全なWEBサイト制作の基本となるでしょう。
個人的に調べていることがあって、RSSをPHPで処理したくなったので、ついでに記述。
PHP5では、simpleXML関数を用いて、簡単にXMLデータをオブジェクト変数に入れることができます。
<?php
$rss = simplexml_load_file("http://feeds.fc2.com/fc2/xml?host=html5.blog20");
echo "<pre>";print_r($rss);echo "</pre>";
?>

もう一つ、私が以前からPHP開発ではよく用いている辞書登録
辞書登録文字「え」
変換後の文字「echo "<pre>";print_r($);echo "</pre>";」
$の後ろに配列名やオブジェクト変数を入れると、きれいに変数の中身を表示してくれます。
・さらにどうでもいいこと
Eclipseなどの統合開発環境・・・重いから嫌い
Windowsでのテキストエディター・・・秀丸やサクラが好きな人が多いですが、私はMKEditorを使っています。
開発環境で用いるエディタはいろいろありますが、個人的には、
VIエディタが最強です。よく、VI以外の環境で、「:wq」とか文字列検索時の次のワードを指定する時に「n」とか押すぐらい、よくVIのコマンドをMKEditorなどに打ち込んでしまいます^^;