API ゲートウェイでは、Golang 関数を使用して API リクエスト パラメーターを検証すると、次のことが可能になります。 無効な入力または悪意のある入力がバックエンド システムに入るのを防ぎます。リクエストの本文が空であることを確認してください。必須フィールドが存在することを確認してください。数値フィールドが数値であることを確認します。文字列フィールドが正規表現に準拠していることを確認します。
API ゲートウェイで Golang 関数をパラメータ検証に使用する
はじめに
ベースに構築する場合クラウド アプリケーションを構築する場合、無効または悪意のある入力がバックエンド システムに侵入するのを防ぐために、パラメーターの検証は非常に重要です。 API ゲートウェイは、API トラフィックを管理し、パラメータ検証などのセキュリティ機能を提供する中間層です。このチュートリアルでは、Golang 関数を使用して API Gateway で API リクエスト パラメーターを検証する方法を説明します。
前提条件
プロジェクトのセットアップ
新しい Golang プロジェクトの作成:
go mod init my-validation-function
必要なパッケージのインポート:
import ( "context" "errors" "fmt" "net/http" "regexp" "strconv" "github.com/cloudevents/sdk-go/v2/event" )
##Golang 関数の作成
func validate(ctx context.Context, event event.Event) (*http.Response, error) { // 获取HTTP请求正文 request := event.HTTP body := request.Body // 验证请求正文的必需字段 if body == nil || len(body) == 0 { return nil, errors.New("request body is empty") } // 获取字段值 name := request.URL.Query().Get("name") age := request.URL.Query().Get("age") // 验证字段值 if name == "" { return nil, errors.New("name is required") } if age == "" { return nil, errors.New("age is required") } // 验证age是否为数字 if _, err := strconv.Atoi(age); err != nil { return nil, errors.New("age must be a number") } // 验证name是否符合正则表达式 nameRegex := regexp.MustCompile("[a-zA-Z]+") if !nameRegex.MatchString(name) { return nil, errors.New("name must contain only letters") } // 返回验证成功的响应 return &http.Response{ StatusCode: http.StatusOK, Body: http.NoBody, }, nil }
独自の API Gateway デプロイメント メカニズムを使用して関数をデプロイし、特定の API リクエストの認証に使用されるように構成します。特定のデプロイ手順については、API Gateway のドキュメントを参照してください。
API エンドポイント /validate
があり、2 つの name
と age
クエリを受け取るとします。パラメーター。私たちが作成した Golang 関数を使用すると、入力が次のルールに準拠していることを確認できます:
REST クライアントまたはブラウザを使用して検証機能をテストします:
GET /validate?name=John&age=30
GET /validate?name=123&age=hello
Golang 関数を使用すると、 API ゲートウェイに強力なパラメーター検証を実装して、API リクエストのデータ品質を確保し、潜在的なセキュリティ脆弱性を防ぐことができます。
以上がAPIゲートウェイでのパラメータ検証にGolang関数を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。