皆さんこんばんは!
8月ですが夏休みは取れそうもありません!ポンコツエンジニアのGONです。
夏休みシーズンですが皆さんご予定はいかがですか。
最近は為替関連のニュースを良く目にしますが、
円安とはいえここ数年でみると海外旅行に行く方は増加の傾向にある様です。
年 日本人出国者数 前年比
2023年 約962万人 -
2024年 約1,301万人 約35.2%増
2025年 約1,473万人 約13.3%増
お金も休みも無い私には羨ましい限りです笑
さて、前回までに人生賭けた求人サービスを構築するために『PHP』『postgreSQL』『AWS』を選んだ理由や、
サービス名の由来、求職者様向け&企業様向け機能のご紹介、面談の採用確率UP方法、
『PHP』『postgreSQL』『AWS』の実機練習用サイトと基本的な操作方法をご紹介させていただき、
さらにシステム構築をするうえで基本的なセキュリティ対策について書かせていただきましたが、
本日は『PHP』のセキュリティ対策であるXSSについてご説明いたします。
XSS(Cross-Site Scripting=クロスサイトスクリプティング)とは、
Webサイトの入力欄などに悪意のあるスクリプト(主にJavaScript)を埋め込み、
他の利用者のブラウザ上で実行させるWebセキュリティ上の脆弱性です。
Webサイトにはお問い合わせや検索等の入力欄がありますが、
それらに悪意のあるJavaScriptを入力しておき、
他の利用者がそのページを見ると、ブラウザ上でスクリプトが実行されるといったものです。
ユーザーが次のような値を入力したとします。
<script>alert('XSS')</script>
PHPで以下の様にコーディングされていると
<?php
$name = $_POST['name'];
echo "こんにちは " . $name;
?>
ブラウザで生成されるHTMLは以下のようになります
こんにちは <script>alert('XSS')</script>
この様にエスケープすることで
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
ブラウザには文字列として表示されるため、JavaScriptは実行されません。
<script>alert('XSS')</script>
フォーム入力値を表示する例
これにより、入力値にHTMLやJavaScriptが含まれていても安全に表示できます。
<input
type="text"
name="name"
value="<?= htmlspecialchars($name, ENT_QUOTES, 'UTF-8') ?>"
>
URLに出力する場合
URLパラメータにはHTMLエスケープだけでなく、URLエンコードも用途に応じて使い分けます。
<a href="search.php?q=<?= urlencode($keyword) ?>">
検索
</a>
HTML属性内では、URLを組み立てた後にHTMLエスケープする方法もよく使われます。
<a href="<?= htmlspecialchars('search.php?q=' . urlencode($keyword), ENT_QUOTES, 'UTF-8') ?>">
検索
</a>
SQLインジェクションが意図しないデータベース操作なら
XSSは意図しないJavaScriptの実行です
これらはセキュリティ対策の第一歩と言えるのではないでしょうか。
「もっとセキュリティについて詳しく!」
「CSRFの説明はまだか!」
などいろいろなご意見いただけますと私も勉強になります。
これらセキュリティ対策を講じながら構築した求人サービスは以下になります。
企業の方、エンジニアの方に使っていただけると非常に喜びます。
▼求人マッチングサービス【ヴェテラン】
https://veteran-work.com/
本日もお疲れ様でした。
明日も頑張りましょう。