【PHP】LaravelでのCSRF対策
LaravelにはCSRF対策が簡単にできるような仕組みが組み込まれている。また、必ずCSRF対策をしないといけない。
そのため、form
を使うときには必ず<form>
内に@csrf
を記述する必要がある
<form action="/create" method="POST"> @csrf ... </form>
@csrf
は以下のように展開される(Ub7ebV8XbFCTtZyenNoFYyK9ctDzaj09wbp2R7II
の部分は毎回、ランダムな値になる)
<form action="/create" method="POST"> <input type="hidden" name="_token" value="Ub7ebV8XbFCTtZyenNoFYyK9ctDzaj09wbp2R7II"> </form>
この_token
も他の値と一緒に送信され、検証が行われる。もし、用意したトークンと一致しなかった場合、419 Page Expired
というエラーになる
CSRF(cross-site request forgeries: クロスサイトリクエストフォージェリ)
しーさふ と読む
Webアプリケーションの脆弱性の1つ
よそのサイトの機能を呼び出す攻撃
CSRFについてかみ砕いて説明してみる – blog.ISHINAO.net
別のサイトのページから悪意のあるリクエストを受け付けないようにする必要がある
以下のような方法が一般的
参考文献
【PHP】composer globalでのインストール先
composer globalでインストールされるディレクトリは
composer global config home
で確認できる
> ls `composer global config home`
Changed current directory to /Users/user_name/.config/composer
composer.json composer.lock keys.dev.pub keys.tags.pub vendor
参考文献
【PHP】MacにPHPとComposerをインストール
brew install php
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
しっかりとインストールされている
> composer -V
Composer version 1.8.5 2019-04-09 17:46:47
参考文献
【MySQL】CONVERT関数
CONVERT(expr, type)
例)符号付き数値に変換する
CONVERT(TBL.COL1, SIGNED)
以下のように暗号化されたカラムを復号化し、数値に変換するときに使う?
CONVERT(AES_DECRYPT(TBL.COL1, 'key-code'), SIGNED)
暗号化されたデータがblobのカラムに入っていて、数値で比較しようとしたときにバグが出たから、SIGNED
に変換するようにして対応した
CONVERT(expr USING transcodinf_name)
CONVERT(TBL.COL1 USING utf8)
参考文献
【PHP】DockerでPHPの環境を作る
仕事で使えそうなPHPというものを家で勉強したいと思ったから、環境を作ることにした。
環境構築につまづきたくないから、Dockerを使うことにした
Docker で PHP の開発環境を構築する方法 - UPDATE をまんま実行したらできたけど、メモしておく。
Dockerfileを作成する
> mkdir php7-apache; cd php7-apache > echo "FROM php:7.3.4-apache" > Dockerfile
imageのbuild
php_apache_image
という名前のimageをbuildする
> docker build ./ -t php_apache_image
マウント用ディレクトリの作成
ホスト側のディレクトリをコンテナにマウントするためのディレクトリを作成する
> mkdir html
このディレクトリにファイルを作成していく
コンテナの起動
> docker run -d -p 80:80 -v /Users/tamago324/src/php/php7-apache/html:/var/www/html --name php_apache_container php_apache_image
docker run -d -p {ホストのポート}:{コンテナのポート} -v {ホストのディレクトリ}/{コンテナのディレクトリ} --name {コンテナ名} {イメージ名}
こんな簡単にマウントできるのすごい
起動の確認
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f19ca19f6f55 php_apache_image "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp php_apache_container
STATUSがUPになっていれば起動している
Webページの作成
ホスト側のhtml/
にindex.php
を作成する
<?php phpinfo();
localhost/index.php にアクセスし、作成したページを確認する
いろいろ情報が出ていればOK!
とりあえず、PHPが動かせる環境ができたからよかった
少しずつやってみよう
Laravelというものを使いたい!!
参考文献
2019/03 記録
今月の出来事
- fish入れようとして失敗した
- gorilla.vimにいった
- ujihisaさんにあって、すごいってなった.
- 実践Vimを少しずつ読もうとして、やめちゃったこと
- Pythonチュートリアルの本を買って、一通り読んだ
- 実際にアウトプットするべき。そうしないと身につかない
- flaskでLINEBot作った
- pillowで画像加工
- heroku
- deniteのSource作成したい
- Shougoさんにフォローされた
- 4月になったらやるぞ!!
- 小さくやっていこう
- まずはmemobook.nvimを固めていく
- hugoやろうとしてやめた(deniteのSourceに使えるかもと思ったけど、そこまでガチガチにやらないから)
- Goやろうとしてやめた
- Google翻訳をするNeovimのプラグインを作った
やろうと思ってやめたこと
- fishのセットアップ
- Goの学習
- 実践Vimを少しずつやろうと思ってやっていない
- 本当に小さくでいいからやろう
できたこと
- FlaskでLINEbotを作った
- Neovimのプラグインを2つ作ったこと
読んだ本
- チーズはどこへ消えた?
- 変化に応じて、自分も変わることの重要性
- 仕事と人生を激変させるなら99.9%アウトプットを先にしなさい
- 最低限の知識を得たら、すぐに行動する。行動しながら足りないところを学んでいく
- どんどん行動する
- ざんねんな努力
- 小さく初めて、やり始める意志の力を少しずつ小さくしていく
- SNSで宣言し、やるしかないという状況を作ることで、行動ができる
- 毎日、少しずつやる。苦痛にならないようなくらいの小さなことでいいから毎日やる。継続することが大事。
やっていること
2019年4月にやること
- Neovimのプラグインを作る(楽しむ)
- Linucの勉強
ゴリラ.vim#2に参加した
第2回ゴリラ.vimに参加してきました!
ujihisaさんのライブコーディングが自分にとってはすごい参考になりました。 まず、関数のインターフェースを書く。呼び出しを書く。そして、「関数の実装、QuickRunで実行」を繰り返す。 書いていたのはVim scriptだったけど、Pythonでも同じように書いていけそうです!
UniteとVim shell(?)を使ったvim操作が華麗だった。 Uniteの後続のDeniteというものを使ってみようと思います。
懇親会では、ujihisaさんに「Vimではやらない方がいいこと。また、Vimではなく、IDEを使った方がいいことはありますか?」と質問してみたところ、「Webブラウジングくらい」と言っていました(半分冗談かもしれないですが…)
Vim最強では…!?
moppさんの発表で、社内でvimrcを読み合うという、とても楽しそうなことをしていて、正直、「羨ましい」と思いました。自分の会社でもVim活せねば…
また、気になるキーマッピングが2つありました。
選択範囲での検索
vnoremap / <Esc>/\%V
選択した文字列を指定の文字列で置換
vnoremap <C-R> "hy:%s/\V<C-R>h//g<left><left>
\V
で文字列そのものを検索できるのすごい便利!!!
今回の発表内で何回か「実践Vim」の話が出てきていました。自分はKindle版で買って放置していたので、また読み直してみようと思います!
今回もとても楽しいゴリラのセミナーでした!
次回の開催予定は4/18(木)らしいです!
https://gorillavim.connpass.com/
会場を提供してくださったQuipper Ltd様、ゴリラさん、登壇してくださった方々、楽しい時間を本当にありがとうございました!
また、会場スポンサー、登壇者を大募集しているそうです!