gpt4 book ai didi

c - 在 golang 中错误地解析带有标点符号的帖子数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:29 24 4
gpt4 key购买 nike

我知道如何在golang中解析post数据

r.ParseForm()
pid := r.PostFormValue("pid")
code := r.PostFormValue("code")
lang := r.PostFormValue("lang")
author := r.PostFormValue("author")

但是post数据是pid=1&code=#include <stdio.h>\x0Aint main()\x0A{\x0A\x09printf(\x223\x5Cn\x22);\x0A\x09return 0;\x0A}&lang=c&author=11 (这是从nginx的日志中获取的)

所以当我解析数据时,它可能是错误的。 code的解析数据是

#include <stdio.h>
int main()
{
printf("3\n")

代替

#include <stdio.h>
int main()
{
printf("3\n");
return 0;
}

那么我该如何解决这个问题呢?

最佳答案

您正在传递原始代码,这可能是不安全,您的问题是因为:

https://golang.org/src/net/url/url.go?s=21047:21092#L761

enter image description here

我建议您对日志代码进行 base64 编码,然后在您的处理程序中对其进行解码。

import "encoding/base64"

...

code, err := base64.RawURLEncoding.DecodeString(r.PostFormValue("code"))
if err != nil {
// handle error
}

那么你的请求应该是这样的:

curl --data "pid=1&code=I2luY2x1ZGUgPHN0ZGlvLmg-XHgwQWludCBtYWluKClceDBBe1x4MEFceDA5cHJpbnRmKFx4MjIzXHg1Q25ceDIyKTtceDBBXHgwOXJldHVybiAwO1x4MEF9&lang=c&author=11" http://localhost:8080

关于c - 在 golang 中错误地解析带有标点符号的帖子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com