ホームページ >バックエンド開発 >Golang >Golang Web アプリケーションのセキュリティ: 入力が有効な utf-8 であるかどうかを確認する必要がありますか?

Golang Web アプリケーションのセキュリティ: 入力が有効な utf-8 であるかどうかを確認する必要がありますか?

WBOY
WBOY転載
2024-02-10 08:10:08682ブラウズ

Golang Web 应用程序安全:您应该检查输入是否有效 utf-8?

php エディター Xiaoxin は、この記事で Golang Web アプリケーションのセキュリティの重要な側面、つまり入力が有効な utf-8 かどうかの確認について紹介します。悪意のあるユーザーが悪意のあるコードや不正な文字を含む入力を送信する可能性があるため、Web アプリケーション開発では入力検証が重要です。特に Golang のようなプログラミング言語の場合、入力の UTF-8 エンコーディングを正しく処理して検証することは、アプリケーションのセキュリティを確保する上で重要です。この記事では、入力が有効な UTF-8 であるかどうかを効率的に確認する方法を検討し、いくつかの実用的なアドバイスとヒントを提供します。

質問内容

いくつかのベストプラクティス文書によると、入力データがutf-8であるかどうかを確認するのが最善です。

私のプロジェクトでは、gin を使用し、検証に go-playground/validator を使用します。 「ascii」バリデーターはありますが、「utf-8」バリデーターはありません。

https://pkg.go.dev/unicode/utf8#validstring を見つけました。入力をチェックするためにそれを使用すると何か役立つのではないかと疑問に思っていました。それとも、go 自体が内部で Unicode を使用しているため、それが与えられているのでしょうか?

これは例です:

リーリー

c. shouldbindjson を呼び出した後、newuser の名前が utf-8 でエンコードされていることを確認しますか? utf8.validstring を使用して name を確認するメリットはありますか?

回避策

Gin は、標準の encoding/json パッケージを使用して JSON ドキュメントをアンマーシャリングします。 このパッケージのドキュメントの説明:

無効な UTF-8 または無効な UTF-16 サロゲート ペアは、引用符で囲まれた文字列をアンマーシャリングするときにエラーとして扱われません。代わりに、Unicode 置換文字 U FFFD に置き換えられます。

デコードされた文字列値が有効な UTF-8 であることを確認してください。 utf8.ValidString を使用して文字列値をチェックする利点はありません。

アプリケーションの要件によっては、Unicode 置換文字「�」を確認して処理する必要がある場合があります。余談: この回答の � で示されているように、SO は Unicode 置換文字を他の文字と同様に扱います。

Go 自体は内部的に Unicode を使用していますか? ​​p>

一部の言語機能では UTF-8 エンコード (文字列範囲、[] ルーン、文字列間の変換) が使用されますが、これらの機能は文字列に格納できるバイト数を制限しません。文字列には、無効な UTF-8 を含む任意のバイト シーケンスを含めることができます。

以上がGolang Web アプリケーションのセキュリティ: 入力が有効な utf-8 であるかどうかを確認する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。