我創建了一個sample.rego檔案,并以 base64 編碼。那么Golang庫中是否有任何方法可以驗證 rego base64 編碼值是否正確。
Sample.rego 檔案:
package policy.authz default allow = false allow { input.policy == "abcd" }Base64 編碼值為:
cGFja2FnZSBwb2xpY3kuYXV0aHoKCiMgbG9naWMgdGhhdCBpbXBsZW1lbnRzIHBvbGljeS4KZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IBnQdCgcBG93IBnQdcBiHsbG93IHpbXBiHpbXBsZW1lbnRzIHBvb
現在我必須在 GoLang 庫的幫助下驗證我們編碼的檔案是否有效。
現在,如果我將 Sample.rego 檔案更改為:
package policy.authz
default allow = false
allow {
wrong dummy data
input.policy == "abcd"
}
- Base64 編碼值為:
cGFja2FnZSBwb2xpY3kuYXV0aHoKZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHsKICB3cm9uZyBkdW1teSBkYXRhCiAgaW5wdXQucG9ICJHNlCmFsbG9s
現在我必須在 GoLang 庫的幫助下驗證我們編碼的檔案無效。
uj5u.com熱心網友回復:
Golang 庫中是否有任何方法可以驗證 rego base64 編碼值是否正確。
您必須對其進行解碼,如果它失敗,則它不是 base64 或未正確編碼。
這里有一個例子。
package main
import (
"encoding/base64"
"fmt"
)
func IsBase64(s string) bool {
_, err := base64.StdEncoding.DecodeString(s)
return err == nil
}
func main() {
fmt.Println(IsBase64(`Invalid string`))
fmt.Println(IsBase64(`VmFsaWQgc3RyaW5nCg==`))
}
uj5u.com熱心網友回復:
import "github.com/open-policy-agent/opa/ast"
modules := map[string]*ast.Module{}
compiler := ast.NewCompiler()
modules["policyModule"], err = ast.ParseModule("policyModule", string(policy))
if err!=nil{
log.Error(err, "unable to parse the module")
}
compiler.Compile(modules)
if compiler.Failed() {
log.Error(compiler.Errors, "unable to compile the module")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385994.html
