Go フレームワークで一般的なセキュリティ問題を解決する方法
Web 開発で Go フレームワークが広く採用されているため、そのセキュリティを確保することが重要です。ここでは、一般的なセキュリティ問題を解決するための実践的なガイドをサンプル コードとともに示します:
1. SQL インジェクション
SQL インジェクション攻撃を防ぐには、プリペアド ステートメントまたはパラメーター化されたクエリを使用します。例:
const query = "SELECT * FROM users WHERE username = ?" stmt, err := db.Prepare(query) if err != nil { // Handle error } err = stmt.QueryRow(username).Scan(&user) if err != nil { // Handle error }
2. クロスサイト スクリプティング (XSS)
XSS 攻撃を防ぐためにユーザー入力をエンコードまたはサニタイズします。例:
template.HTMLEscape(unsafeString)
3. CSRF
トークンまたは多要素認証を使用して、CSRF 攻撃を防ぎます。例:
// 生成 CSRF 令牌 csrfToken := GenerateCSRFToken() // 添加到表单中 <input type="hidden" name="csrf_token" value="{{ csrfToken }}"> // 验证令牌 if request.FormValue("csrf_token") != csrfToken { // CSRF 攻击,拒绝请求 }
4. ファイルアップロードの脆弱性
ファイルアップロードの脆弱性を防ぐために、ユーザーがアップロードしたファイルを厳密に検証します。例:
// 检查文件类型是否为图像 mimeType := http.DetectContentType(file) if !strings.HasPrefix(mimeType, "image/") { // 不是图像,拒绝上传 }
5. セキュリティ ヘッダー
次のような一般的な攻撃からアプリケーションを保護するために適切なセキュリティ ヘッダーを設定します。
func setSecurityHeaders(w http.ResponseWriter) { // 设置 X-Frame-Options 标头以防止 Clickjacking w.Header().Set("X-Frame-Options", "SAMEORIGIN") // 设置 X-XSS-Protection 标头以防止 XSS w.Header().Set("X-XSS-Protection", "1; mode=block") }
実際のケース: SQL インジェクションの防止
データベースを対話的に処理するために GORM モデルの使用を検討してください。状況。次の例では、プリペアド ステートメントを使用して SQL インジェクションを防止します。
以上がgolang フレームワークでよくあるセキュリティ問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。