PHP

mySQL+PHPの備忘録-セキュリティ-

catch130508

先日、仕事で作った初めてのDB。
本やサイトを見ながら作ったので、一応セキュリティは大丈夫なはず!
でもセキュリティのポイントをよく理解していないので、(自分のやったことだから余計に)不安。
今後のためにも、改めて見直し&調べてみました。

DBに接続のIDやパスワードなどは別ファイル化が安全!

本の通りに作っていると、SQL文の中にIDもパスワードもそのまま入力した形式で記述されています。
セキュリティを考えると、できればIDやパスワードは別のだいるにして、尚且つ別の階層に置きたいところです。

そこで、こちらのサイトを参考に、IDとパスワードを別ファイルにして、接続SQL文を記述したファイルも別ファイルにして、尚且つ両方とも非公開ディレクトリに移してみました。

エラーメッセージにDBのアドレスが出るのも危ない

一般公開されたDBで、万が一エラーが出てDBのアドレスが出ちゃうのは絶対に避けたいですよね。
そんな時、頭に@をつけるだけでその文のエラーメッセージは表示されないようです。

ちなみに・・・今回作ったのは社内の数人だけが使用するのですが、一応.htaccessによるベーシック認証をかけています。
一般公開されているものではないので、@付けは今回は未対応にしました。

_POSTや_GETは適切に処理すべし

前記事で、

htmlspecialchars と mysql_real_escape_string の違い

  • mysql_real_escape_string|DBに渡すとき
  • htmlspecialchars|サイトに表示するとき

と記しました。これに補足です。

  • mysql_real_escape_string|DBに渡すとき
             特殊文字をエスケープしてDBに渡してくれる
         

  • htmlspecialchars|サイトに表示するとき
  •            特殊文字をHTMLエンティティに変換してくれる
          |__ ENT_QUOTES|シングルクオートも ' にエスケープしてくれる

セキュリティ関連で検索すると、すごーくたくさんのページが表示されます。しかも難しそうな文書が多かったりorz
今回調べてみた結果、IDとパスワードの別ファイル化・_POSTと_GETの時の処理は、忘れずにやらなければいけないことだと分かりました。
エラーメッセージについては、構築する際にエラーはつぶしておくべきですが、予期せぬエラーが起こった時のためにも、やっておいた方が良いんでしょうね。

  • この記事を書いた人

サオリサン

WEB制作のディレクター・制作・運営支援をしてます(フリーランス&会社員)。アクセス解析してサイト改善するのが好き。

-PHP
-, ,