駄文セキュリティのお勉強
JavaScriptでゲームを作っていたはずなのですが、気付くとサイトを制作しておりまする。
そんなわけでセキュリティに関してお勉強してることを少しだけ書いていく
XSS対策
これは誰でも聞いたことあるだろう脅威。
フォームに悪意あるJavaScriptのソースを書かれてそのままリクエストを送ると何の対策もしてないとJavaScriptが実行されてしまうというお話。
PHPのhtmlspecialchar()でエスケープすればいいと言われている入門というか当たり前くらいに思われている。
ヘッダーでCSPを設定してインラインでの実行を不許可にすることでも防げる。
CSPはXSS対策以外のこともできるので、両方やるべき。
CSRF攻撃対策
これは結構、危険な感じ(危険じゃないリスクなんてないけど)
どこかの芸人さんがSNS乗っ取られたとか言ってましたがそういうことができる攻撃。
セッションのログインしてます状態でダミー的なサイトのボタンとかをクリックしたら、実は銀行アプリとかの送金の実行をしてしまってて、というユーザーが意図せず自分で何かやらかしてしまうということが実現できるリスク。自分ど言っててよくわからんですが。
これはCSRFトークンというワンタイムパスワードみたいなのを作成してセッションに保存して、リクエスト飛ばすときにhidden属性で一緒に飛ばし、リクエスト先のページでちゃんと正規のユーザーが意図した操作をするページからアクセスしてきましたぜということを照合することで防げる。
ここだけ聞くとリファラーチェックでもイケそうな感じしますな。
実際は両方やればいい。
これの他にクッキーのsamesiteの設定にLaxとかStrictを設定して、クロスサイトからのリクエストを禁止することもできる。でもStrictに設定してしまうとGoogleAnalyticsもちゃんと計測できなくなってしまうので注意しないとだな。
パス・トラバーサル、ディレクトリ・トラバーサル対策
これはファイルの実行とかアップロードをする処理の時に、相対パスを使ったパスによる意図しない場所への不正アクセスをする困ったちゃん。
相対パスだとディレクトリの上の階層に登って行けてしまうから、絶対パスに変換仕様値というお話。
ファイル名はbasenameで抜き取ってそれ以外を削ぎ落としてrealpathで絶対パスを作って実行とかファイルを保存したりすることで対策する。
あと外部から入力されたデータ(文字列)はサニタイズ(エスケープ)とバリデーション(正規化)を徹底して意図しない特殊文字とか形式を強○的に書き換えたり不許可にしたりすることで防ぎましょう。
SQLインジェクション対策
クエリ実行時はPDO接続でプリペイドステートメントを使って変な記号とか命令が混入しないように対策する。
この他にもセッションハイジャッキングだとかセッション系のリスクがいくつかあったりで、その意味を調べたり、どんなコードで対応するのか調べてみたり。
スパム対策も大変と思う。
GoogleとかのCAPTCHAを導入することも考えましたが、なるべくそういうのは使いたくないという趣旨でやってますので、対策作らないとですね。
たかだかログイン機能を実装するだけでなかなか前に進ませてくれません。
AIがなければ諦めてたと思う。
そもそもログイン機能なんかいるのかよってお話なのですが、いるんですねぇ不思議なことに。自己満ですが。必要です。
二段階認証とかもしないとです。
GUIでゲームとかも作りたいので。投稿サイトにしたいので。ひとまず自分だけだけど。
本当はもうPHPだとか投げ捨てて、カードとかの持つ属性値とかのほうをやりたいんですけどね😭
まぁ、気長にやります。
死ぬわけでもないですし。
そんなわけで前に進んでるのか後ろに下がってるのか謎なサークルですが、どうか見捨てず気長にお待ちいただけますと幸いです🙏💦
Exclusive to users above "Follower"Free
無料プラン限定特典を受け取ることができます
Free