【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)  # 出力: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

サニタイズ (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);  // 出力: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

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の答えの終わり】

 

 

 

 

薔薇の名は万葉といふ茜雲