ブログ

  • WordPress3.5.2未満にXSSの脆弱性

    先日、さくらインターネットのホームページを見ていると、お知らせ欄に、「【重要】WordPressにおけるクロスサイトスクリプティングの脆弱性について」(2013/8/1)なる標題が。

    見てみると、WordPress3.5.2未満にXSSの脆弱性が見つかったとのことです。

    そこで、慌てて、最新のWordPress 3.6に、バージョンアップしました。

    とくに問題なく、バージョンアップでき、管理画面等の使い勝手もそれほど変更はないようなので一安心です。

    それにしても、WordPressのような有名CMSについて、XSSの脆弱性が見つかるとは少し驚きです。

    WordPressを放置してバージョンアップをされていない方は、早めに、3.6を導入した方が良いですよ。

    ちなみに、Yahooのニュースでも取り上げられていたみたいです。

    http://headlines.yahoo.co.jp/hl?a=20130726-00000088-mycomj-sci

    いつも見ているのですが、気づかなかったですね。

  • 【書評】10日でおぼえるPHP入門教室 第4版

    ■ 書評対象:10日でおぼえるPHP入門教室 第4版 (山田 祥寛)

    ■ 良い点

    ・ オールカラーで読みやすい
    ・ 環境構築(XAMPP)や設定に詳しい
    ・ 4種類のサンプルアプリを作ることが出来る
    ・ 値ごろな割りに、内容が濃く、コスパが良い
    ・ セキュリティーにも配慮されている
    ・ DB接続にPDOを使っている
    ・ コードに対する、実行結果を表示している

    ■ 悪い点

    ・ 入門とあるが、全くの初心者には難しめである
    ・ SQLの解説は駆け足である

    ■ 総評

    (難易レベル)
    タイトルに、「PHP入門教室」とあるように、初心者向けのPHP本です。ただ、全くのプログラミング初学者には、若干、ハードルが高いです。

    読者対象としては、一通り、PHPの文法を学び、応用としてサンプルアプリに挑戦するぐらい人が最適だと思います。難易度は、初級と中級の間くらいのレベルです。

    (形式面)
    本の進め方としては、「実習」→「講義」→「まとめ」と進みます。実習でコードを最初に読み、続いて、講義を読むという形式です。コードの重要箇所がマークされているので重要箇所が読みやすいです。

    (内容面)
    サンプルアプリとしては、「アンケートフォーム」、「ゲストブック」、「画像アップロードシステム」、「スケジュール管理アプリ」の4種を作成します。

    ファイルの扱いから、データベースを利用してのCRUDシステムまで一通り作れるようになっています。DBの設定等にも詳しく、phpMyAdminの扱い方なども学ぶことができます。

    データベースでは、PDOを利用しているのも良い点です。

    DBに関して言えば、SQLの解説は少し駆け足になっている気がしますが、紙面の都合上仕方のない感じです。ここら辺は、自分でSQLの解説書で別に理解を深めた方が良さそうです。

    最後の章では、認証機能を扱っているのですが、PEARのAuthを使っています。現在のPHPの潮流として、PEARのAuthを使うのは、少し古い気もするので、自作の認証機能を解説をしてくれた方が良かったような気もします。

    結論としては、PHPの文法を一通り学んだ読者が、応用としてサンプルアプリを作りながら、中級者を目指すことのできる良書といえるでしょう。なかなかのオススメです。

    10日でおぼえるPHP入門教室 第4版

  • 【CORESERVER】uptimeでサーバーの負荷を確認する方法【XREA】

    レンタルサーバーを借りていると、時々、サーバーが重くなることがあります。

    たとえば、ある運営サイトはCORESERVERを利用しているのですが、急にページの読み込みが遅くなったりします。

    こうした時に使うと便利なのが、Linuxの「uptime」コマンドです。

    サーバーにSSH接続して、コマンドを実行すると現在の簡易的な負荷をみることができます。

    CORESERVERの場合、普段は、2.00から3.00くらいです。この数値は、サーバーの平均負荷であり、数が多くなるほど、重い負荷がかかっていることを意味します。

    もしも、1.00前後なら、かなり快適なのではないでしょうか。

    なぜ、今日こうした記事を書いたかというと、CORESERVERがとても重いから。uptimeしてみると次のようになってました。

    10:33pm  up 367 days  6:56,  1 user,  
    load average: 7.11, 13.58, 20.01

    load averageが平均負荷を表示しています。3つの数字がありますが、左から、過去 1, 5, 15 分のシステムの平均負荷となっています。

    20超えちゃってますね・・・。

    どうりで重いはずです。スパマーのせいでしょうか。

    ちなみに、「top」コマンドでは、プロセスの詳細を見る事ができます。

    見てみると、とあるvpopmailがcpuを90%ほど占有してました。スパムメールかな。それと、とあるmysqlが30%ほどになるときがある。多分、これが原因ですね。

  • 【JavaScript】setIntervalを一定時間後に、setTimeoutする方法【clearInterval】

    JavaScriptのsetIntervalを一定時間後に、停止する方法の覚書です。

    まず、前提として、インターバルタイマーの使い方です。

    var intervalID = setInterval('someFunc()', 10000);

    上記スクリプトで、10秒ごとにsomeFuncを実行できます。

    このタイマーを、単純に停止するには、タイマーIDである、intervalIDを、clearIntervalすればOKです。

    clearInterval(intervalID);

    それでは、このsomeFuncを実行するインターバルタイマーを1分後に停止するにはどうすればよいのでしょうか?

    ここでは、setTimeout関数にclearIntervalを指定する方法で実行してみます。

    var intervalID = setInterval('someFunc()', 10000);
    setTimeout(function(){clearInterval(intervalID);}, 60000);

    上記スクリプトを実行すると、インターバルが、1分後に停止します。

    自分が実行した限りでは、clearIntervalを無名関数化することにより上手くいきました。

    なお、直接、clearInterval関数を指定した場合は、なぜかエラーになったのですが、今、思うとシングルクオートを括り忘れたからかもしれません。

    いずれにしても、インターバルを永続させると不具合が生じる場合、たとえば、Ajaxで定期的にサーバーにアクセスさせる場合などで、一定時間後にインターバルタイマーを止めたい場合には、使える方法だと思います。

  • CORESERVERにgitをインストールする方法

    gitをCORESERVERにインストールしたので覚書しておきます。

    ※Linuxコマンドとviエディタの知識が前提として必要になります。作業時間は小一時間ほどです。

    まず、SSHで操作するので、CORESERVERの管理画面にある「ホスト情報登録」から「SSH登録」を済ませておきます。

    SSHで、ログインできるまで、「5-10分程度掛かります」と出るので、その間に、gitの公式サイトで、最新版のgitを確認しておきます。
    http://git-scm.com/

    現在時点(2013/7/20)では、最新安定版は、「1.8.3.3」です。

    さて、頃合をみて、TeraTerm などで、SSHログインします。
    ログインした場所は、ユーザーのホームディレクトリです。

    git用に新たにディレクトリを作成しても良いのですが、ここでは、ホームディレクトリにgitをインストールします。

    そこで、先程、確認した最新版のgitを、wgetコマンドで引っ張ってきます。(wgetするファイルは、次のURLアドレスから持ってこれます。なお、バージョンが異なるときは、バージョン番号を変えればよいはずです。)

    wget http://git-core.googlecode.com/files/git-1.8.3.3.tar.gz

    上手く実行できると、git-1.8.3.3.tar.gz がホームディレクトリ上に現れるはずです。lsコマンド等で確認してみましょう。次にこのファイルをtarコマンドで次のように解凍します。

    tar xvzf git-1.8.3.3.tar.gz

    解凍できると、「git-1.8.3.3」というディレクトリが現れます。lsコマンドで確認してみましょう。次に、この「git-1.8.3.3」ディレクトリにcdコマンドで移動します。

    cd git-1.8.3.3

    移動した先で、lsコマンドを実行すると多くのファイル等があるのがわかります。gitのソースコードですね。次に、gitをインストールするためのコマンドを発行します。

    ./configure --prefix=$HOME/local

    $HOME/local とあるのは、git用に、ホームディレクトリ直下にlocalディレクトリを作成することを意味しています。./configureというのは、そこにgitをインストールする下準備のようなものです。下準備ができたら、gmakeコマンドでコンパイルします。

    gmake

    gmakeコマンドを発行すると、TeraTerm上に多数のファイルが流れていきますが、慌てずに。1分から2分くらいでコンパイルが終了します。次にインストールします。下のコマンドを発行します。

    gmake install

    こちらのコマンドは、10秒ほどで完了します。これでインストールは終了です。最後に、パスの設定をします。パスの設定をするために、一度、ホームディレクトリに移動します。

    cd

    cd だけでホームに戻ります。さて、lsコマンドで見てみると、localディレクトリが現れています。git用なので間違えて削除しないように。本題のパスの設定をします。

    設定用のファイル「.bashrc 」ファイルを作成します。先頭にドットが付いているので注意してください。ここでviを使います。

    vi .bashrc

    viエディタが開くのでパスを一行だけ新規に書いて保存します。viの操作は、「i」の押し下げで、入力モードになります。下部にINSERTと表示されれば入力できます。ここに、パスを書きます。なお、youraccountは自分のアカウントです。

    export PATH=$PATH:/virtual/youraccount/local/bin

    上記の一行を書いたら保存します。viで保存するには、まず、「Esc」エスケープキーで編集モードに戻ります。次に、「:wq」で保存できます。

    :wq

    保存できているかは、「la」コマンドでみることができます。laコマンドを発行すると、.bashrc ファイルがあるのがわかります。最後に次のコマンドで、パスを反映させます。

    source .bashrc

    さて、gitがインストールされたか、確認してみましょう。確認するには、バージョン情報を表示させます。

    git --version

    バージョン情報が「git version 1.8.3.3」と表示されたら、完了です!

    これで一応終了です。お疲れ様です。

    蛇足ですが、git の初期設定も済ませておきます。なお、ホームディレクトリから設定できます。

    git config --global user.name 'your name'

    上記コマンドで、ユーザー名をgitに登録します。

    git config --global user.email 'your e-mail'

    上記コマンドで、Eメールをgitに登録します。

    git config --global color.ui true

    上記コマンドで、一部カラー表示になります。次に、git作業用のディレクトリを作成して移動します。例として、「my_git」ディレクトリを作成します。

    mkdir my_git
    cd my_git

    それでは、次のコマンドで、上記ディレクトリを初期化します。

    git init

    初期化に成功すると、「Initialized empty Git repository」といったメッセージが表示されます。

    以上です。お疲れ様でした。