XSS(Cross-Site Scripting)は、攻撃者がWebページに悪意のある JavaScript を注入し、ユーザーのブラウザ上で実行させる攻撃です。
🛡️ XSS の防御方法
- HTMLエスケープ:
<→<など - テンプレートエンジン:Jinja2 など自動エスケープするものを使う
- CSP:実行できるスクリプトのソースを制限
XSS(Cross-Site Scripting)は、攻撃者がWebページに悪意のある JavaScript を注入し、ユーザーのブラウザ上で実行させる攻撃です。
<→< などSQLインジェクションは、ユーザー入力に悪意のある SQL を混ぜてデータベースを不正操作する攻撃です。
# OK: プレースホルダを使う
cursor.execute("SELECT * FROM users WHERE name=?", (name,))
# ORM を使えばさらに安全
user = User.query.filter_by(name=name).first()CSRFは、ログイン済みユーザーが罠サイトを訪問したとき、ユーザーの権限で意図しないリクエストを送信させる攻撃です。
<form method="POST">
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
</form>
from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect(app)