【Copilotの答えの始め】
エスケープ (escaping)とサニタイズ (sanitizing)の違いと、適切な処理の例について説明します。
エスケープ (Escaping)
エスケープは、特定の文字や記号を他の文字列に置き換えることで、それらが特別な意味を持たなくなるようにする処理です。主にHTMLやJavaScriptで使用されます。例えば、<や>などの特殊文字をエスケープすることで、ブラウザがこれらをHTMLタグとして解釈しないようにします。
例: HTMLエスケープ (Python)
1 2 3 4 5 6 7 8 9 |
import cgi def html_escape(text): return cgi.escape(text, quote=True) # 例 user_input = '<script>alert("XSS")</script>' escaped_input = html_escape(user_input) print(escaped_input) # 出力: <script>alert("XSS")</script> |
サニタイズ (Sanitizing)
サニタイズは、入力データをフィルタリングまたは修正することで、悪意のある内容を除去する処理です。これにより、ユーザー入力に含まれる潜在的なセキュリティリスクを減らします。例えば、HTMLをサニタイズすることで、クロスサイトスクリプティング(XSS)攻撃を防ぐことができます。
例: HTMLサニタイズ (JavaScript, DOMPurify)
1 2 3 |
// DOMPurifyライブラリを使用 var cleanHTML = DOMPurify.sanitize('<img src="javascript:alert(\'XSS\')">'); console.log(cleanHTML); // 出力: <img> |
適切な処理の例
1. ユーザー入力のHTMLエスケープ:
1 2 3 4 5 6 7 8 9 10 |
function escapeHTML(str) { var div = document.createElement('div'); div.appendChild(document.createTextNode(str)); return div.innerHTML; } // 例 var user_input = '<script>alert("XSS")</script>'; var escaped_input = escapeHTML(user_input); console.log(escaped_input); // 出力: <script>alert("XSS")</script> |
2. SQLサニタイズ (Python):
1 2 3 4 5 6 7 8 |
import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() user_input = 'example_user' query = 'SELECT * FROM users WHERE username = ?' c.execute(query, (user_input,)) |
このように、エスケープとサニタイズはそれぞれ異なる目的と方法を持ちますが、共にセキュリティ上重要な処理です。適切な処理を行うことで、アプリケーションの安全性を高めることができます。
【Copilotの答えの終わり】
薔薇の名は万葉といふ茜雲
