インターネットの発展に伴い、Web サイトやアプリケーションのセキュリティ検証手段として検証コードがますます一般的になってきています。検証コードは、ロボットによる悪意のある攻撃や悪用を防ぐことを目的とした、画像、音声、テキストなどに基づく人間とコンピューターの対話技術です。
今回はGo言語のGinフレームワークを使って検証コード生成と検証機能を実装する方法を紹介します。 Gin は、RESTful API および WEB アプリケーションを迅速に構築できる軽量の Web フレームワークです。
始める前に、まず Jin フレームワークをインストールする必要があります。 Go コマンド ライン ツールを使用してインストールできます。
go get -u github.com/gin-gonic/gin
検証コード イメージを生成するには、サードパーティ ライブラリ github.com/mojocn /base64Captcha。このライブラリは複数の検証コード タイプを提供し、カスタム パラメーターをサポートします。以下は、イメージ検証コードを生成するためのサンプル コードです。
package main import ( "fmt" "time" "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" ) func main() { r := gin.Default() // 生成验证码图片 r.GET("/captcha", func(c *gin.Context) { // 配置 driver := base64Captcha.NewDriverDigit(80, 240, 4, 0.5, 80) store := base64Captcha.DefaultMemStore captcha := base64Captcha.NewCaptcha(driver, store) // 生成验证码 id, b64s, err := captcha.Generate() if err != nil { c.JSON(500, gin.H{"error": err.Error()}) return } // 返回验证码图片 c.JSON(200, gin.H{ "id": id, "image": b64s, "expires": time.Now().Add(time.Minute * 5).Unix(), }) }) r.Run(":8080") }
この例では、デフォルトのメモリ ストレージを使用して検証コード情報を保存します (Redis などの他のストレージも使用できます)。数値ベースの CAPTCHA ドライバーは、幅 80 ピクセル、高さ 240 ピクセル、長さ 4 文字、およびノイズ強度 0.5 を使用して CAPTCHA を作成します。 Generate メソッドは、生成された検証コード ID、検証コード イメージ、およびエラー情報を返します。ここでは、検証コード イメージを Base64 エンコード形式でクライアントに返し、応答で有効期限を指定します。
クライアントが検証コードを送信するとき、ユーザーの入力が生成された検証コードと一致するかどうかを検証する必要があります。引き続き、github.com/mojocn/base64Captcha ライブラリによって提供される Verify 関数を使用して、検証コードを検証します。画像キャプチャを検証するサンプル コードを次に示します。
package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" ) func main() { r := gin.Default() // 验证验证码 r.POST("/verify", func(c *gin.Context) { var form struct { ID string `form:"id" binding:"required"` Code string `form:"code" binding:"required"` } if err := c.ShouldBind(&form); err != nil { c.JSON(400, gin.H{"error": err.Error()}) return } // 验证验证码 if base64Captcha.VerifyCaptcha(form.ID, form.Code) { c.JSON(200, gin.H{"success": true}) } else { c.JSON(401, gin.H{"error": "验证码错误"}) } }) r.Run(":8080") }
この例では、クライアントから送信されたキャプチャ ID とキャプチャ値を保存する構造体を定義します。 ShouldBind 関数を使用して、リクエスト本文を構造体にバインドします。バインドが失敗すると、400 エラーが返されます。検証コードを検証する場合、VerifyCaptcha 関数を使用して、クライアントによって送信された検証コードの値が正しいかどうかを検証できます。検証が成功した場合は 200 応答が返され、そうでない場合は 401 エラーが返され、検証コード エラーの理由が求められます。
検証コードを生成するための上記のコード例と検証コードを検証するためのコードを組み合わせると、以下に示すような完全なコードを取得できます。
package main import ( "fmt" "time" "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" ) func main() { r := gin.Default() // 生成验证码图片 r.GET("/captcha", func(c *gin.Context) { // 配置 driver := base64Captcha.NewDriverDigit(80, 240, 4, 0.5, 80) store := base64Captcha.DefaultMemStore captcha := base64Captcha.NewCaptcha(driver, store) // 生成验证码 id, b64s, err := captcha.Generate() if err != nil { c.JSON(500, gin.H{"error": err.Error()}) return } // 返回验证码图片 c.JSON(200, gin.H{ "id": id, "image": b64s, "expires": time.Now().Add(time.Minute * 5).Unix(), }) }) // 验证验证码 r.POST("/verify", func(c *gin.Context) { var form struct { ID string `form:"id" binding:"required"` Code string `form:"code" binding:"required"` } if err := c.ShouldBind(&form); err != nil { c.JSON(400, gin.H{"error": err.Error()}) return } // 验证验证码 if base64Captcha.VerifyCaptcha(form.ID, form.Code) { c.JSON(200, gin.H{"success": true}) } else { c.JSON(401, gin.H{"error": "验证码错误"}) } }) r.Run(":8080") }
この記事では、Gin フレームワークと github.com/mojocn/base64Captcha ライブラリを使用して検証コードの生成と検証機能を実装する方法を紹介します。検証コード技術は広く使用されているセキュリティ検証方法であり、ロボット攻撃や悪意のある悪用を効果的に防止できます。実際には、実際のニーズに基づいて他の検証コードの種類と保存方法を選択し、他のセキュリティ対策と組み合わせてアプリケーションのセキュリティと信頼性を強化できます。
以上がGin フレームワークを使用して検証コードの生成と検証機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。