PHPではPassword Hashing関数を用いて簡単・安全にパスワードのハッシュ化と検証を行うことができます。password_hash関数でパスワードハッシュを生成、データベースに保存して、入力されたパスワードをpassword_verify関数で検証すればよいわけです。普段何気なく利用しているこのパスワードハッシュの仕組みですが、その文字列は定められたフォーマットに沿って作られていることはご存知でしょうか。どのようなフォーマットなのか、bcryptとModular Crypt Formatについて触れながら解説します。
In this talk i am going to explore ways that PHP can be made more secure by looking at some known common vulnerabilities and coding techniques. Covering topics like user input sanitisation using Filter_Var i will also look at ways that libraries and dependancies can introduce known vulnerable paths.
みなさん、脆弱性対策してますか?
コードに潜む脆弱性対応は以下の二つに分類できるかと思います。
このうち後者では、Github を使っているならば Dependabot 機能による脆弱性検知が使えます。
Dependabot security updates 機能を有効にしておくと、勝手にPRを出してくれますよね。
便利です。これの内容チェックしてマージするだけ。
めでたしめでたし。
・・・とならないので注意です。
実は、検知していても自動PRになっていない脆弱性があります。
「PRになるのはcriticalレベルのもの。多分そうだろう。」などと勘違いしておりました。
危ない危ない。
本セッションでは Dependabot の説明、注意点、運用方法のケーススタディをお届けします。
PHPUnitやPHPStanのようなComposerでインストールしてコマンドで呼び出すライブラリ・アプリケーションの作成方法を紹介したいと思います。
「ユニットテストなんてメンディーよなー」「疎通動確の方が速いよなー」
そんな方へお届けする「気張らないでやれる」「"プログラマにとって"有用・有益なユニットテスト」についてのお話です。
また、次の症状にお悩みの方にも有効です。
・ユニットテストはやってみたいけどPHPUnitの導入で挫折した
・PHPUnitほど高度ではなくて良いので、もうちょっと気軽にユニットテストしたい
・バージョンアップのたびに動かなくなるテストスィートってどうなの
みなさんはカンファレンスで登壇したことがありますか?
カンファレンスで登壇をしているスピーカーは、様々な過程を経てみなさんの前でトークをしています。例えば採択前ならネタ決めやプロポーザル、採択後ならスライド作成・トーク練習などの準備・・・
このトークするまでの過程は、人によって違うところもあり暗黙知であることが多いように思えます。
そこで今回は、過去に私がPHP系カンファレンスにて登壇した内容を例にしつつ、自分がカンファレンスで登壇するまでに準備していることを話します。
まだ登壇したことがない方はもちろん、登壇したことがある人も良いところを取り入れられるきっかけになれば幸いです!
具体的には以下のことについて触れる予定です!
・プロポーザルを出す時にどんなことを考えているのか?
・トークするまでの準備はどういうことをしてるのか?
・過去に採択されたことのあるトークを例に具体例を紹介
自動テストに興味はあるけど、何から手を付ければいいのかわからない、
またなぜテストが必要なのかわからないといった初学者向けの内容を想定しています。
自動テストとは何か、なぜ必要なのか、テストのしやすいコードとは何かについて発表します。
データベースのテーブル定義をしてて、こんな事ってないですか?
・まだ始めたばかりのサービスでユーザ数を知られたくない。
・ユーザIDが連番になっていて、ハックされそうで怖い。
このようにユーザIDを公開したくない場合に、推測されにくいIDがuuidです。
UuidTraitを作って、Modelクラスでuseするだけでuuidの生成ができます。
このセッションでは、UuidTraitの作成から使い方までを説明します。
変更履歴の機能を実装するのって、考慮する事も多いし、大変ですよね?
Laravel Activity Logを使うと、簡単に変更履歴の機能を実装できます。
このセッションでは、laravel-activitylogをどのように導入するか説明します。
生活110番(1,000万PV/月間)
https://www.seikatsu110.jp/
のリニューアルを
フロントをNuxt.js
バックエンドをCodeIgniterで行いました。
サーバーはAWSです。
苦労話とPHP、AWSを中心にお話します。