[PHP Phalcon 3.4] メールフォーム作った

https://www.dobusarai.net/contact/

repository https://bitbucket.org/dobusarai/phalcon-micro-mailform/

Phalconは常にToolsのcreate-project --type simpleで作っていたのだが、Controller無しのmicroで今回は書いた。CSRF周りはControllerにあるのだけど、今回はPhalcon\Security\Random()使って自前。問題はないはず。FormActionの隠蔽などもちょっとだけ考えた。

view以外はほとんどここ。
https://bitbucket.org/dobusarai/phalcon-micro-mailform/src/master/app/app.php

一点めんどくさかったのはToolsでの雛形作成で、volt使うって指定しても使わねえでやんの。
※追記 : PhalconToolsのVersion上げれば直ってるのかも

# phalcon create-project hogefuga --type=micro --template-engine=volt

serviceのviewの部分でregisterEnginesを追記する。
https://bitbucket.org/dobusarai/phalcon-micro-mailform/src/master/app/config/services.php

/**
 * Sets the view component
 */
$di->setShared('view', function () {
    $config = $this->getConfig();
    $view = new View();
    $view->setViewsDir($config->application->viewsDir);
    // use volt engine
    $view->registerEngines([
        '.volt' => function($view){
            $config = $this->getConfig();
            $volt = new VoltEngine($view, $this);
            $volt->setOptions([
                'compiledPath' => $config->application->cacheDir,
                'compiledSeparator' => '_',
                'compileAlways' => false
            ]);
            return $volt;
        }
    ]);
    return $view;
});

nginx & php 7.2.10 & mysql 8.0 & http/2

表題の環境に変えた。ようやく。

だるくてだるくて仕方がなかったのだけど、変えようと思い立ってから3ヶ月も過ぎてたので!mysql8.0からクエリキャッシュ無くなってしまったので、apcuもしくはredisでそこらへんは実装したい。なぜnginxに変えたかったかといえば、golangもしくは.net coreやりたいので、簡単にそっちに投げこめるリバースプロキシが欲しかったというのが一番。二番目は趣味ではなく仕事なのだけど、わし、.htaccessだいっきらいなの。アレ、コンフィグをそこら中に書き散らすってことなんだけど、馬鹿が調子に乗って使いたがる。nginxならそれ読めませーーん(笑)って言えるので。

とりあえずIP直打ちを404にしたけど、明日以降もうちょっとチューニングするか……。

頭おかしすぎワロタ

詳細は例の先生のサイトで。

WordPress 4.7.1 の権限昇格脆弱性について検証した | 徳丸浩の日記
http://blog.tokumaru.org/2017/02/wordpress-4.7.1-Privilege-Escalation.html

なにこれ……

存在しないコンテンツが指定された場合、update_item_permissions_checkメソッドの様々なチェックをすべてくぐり抜け、メソッド最後のreturn文にて true が返されるところが恐ろしいですね。 しかし、この「存在しないコンテンツ」については、以下の update_item メソッドの 526行目にてエラーが返され、結果としては何もしない *はず* でした。

そもそもなんだけど、単なるblogシステム(昨今では中規模なCMSとしても使われてるけど)なんだからデフォでそんなどうでも良い機能は切っとけよっていう。

しかし読めば読むほど、自身も反省、いや慎重に書かなければなと思うことがある。それはキャストだ。静的型付でのコーディングが長い奴はJavascriptだとかphpだとかrubyだとかpythonだとかの動的型付言語でコーディングするときに不必要にキャストしてしまいやすい。はい、私もです。今回のWPの件は、キャストがどうこう以前の問題だとは思うが、不用意なキャストの前後でふるまいのチェックが疎かになる可能性が高そうだなと思ったのでわざわざ書いた。

楽だからWP選んだし(主にデザインとTwitter連携)、仕事やバイトでカスタマイズとか色々あるから面白いかなあと思ったけど、やっぱり趣味じゃないなーこれ。アホみたいにクエリ投げるし設計が20世紀だよ。近日中に捨てよう。