gpt4 book ai didi

ballerina - 在 Ballerina 服务中调用后端时传递动态请求路径

转载 作者:行者123 更新时间:2023-12-01 10:11:14 24 4
gpt4 key购买 nike

我正在尝试动态传递后端请求的路径。但是路径变量是敏感参数,因此不允许我传递传入路径或任何字符串,如 studentInfoEP->get("/student"+ studentId);

知道我们该怎么做吗?

endpoint http:Client studentInfoEP {
url: "http://localhost:9091/studentinfo"
};

@http:ServiceConfig { basePath: "/studentfinder" }
service<http:Service> studentFinder bind listener {


@http:ResourceConfig {
methods: ["GET"],
path: "/{studentId}"
}
getStudentById(endpoint client, http:Request req, string studentId) {

var studentInfoResp = studentInfoEP->get(req.rawPath);
...
}
...
}

最佳答案

Ballerina 程序需要生产和使用网络服务,这些程序很容易引入 SQL 注入(inject)、未经验证的重定向等安全漏洞。因此,Ballerina 语言的设计方式使 Ballerina 程序在设计上是安全的。这个语言设计包括taint checking和传播以及集成的身份验证和授权架构。

get() 的参数被修饰为安全敏感的,因此 Ballerina 编译器不允许将“不受信任的数据”传递给此函数。不受信任的数据可能来自程序参数、HTTP 请求、文件等。请参阅“How to Write Secure Ballerina Programs”以了解有关此主题的更多信息。

在这里,在您的示例中,req.rawPath 可能包含受污染的值,因此 Ballerina 编译器不允许您将此受污染的值传递给敏感参数。在将受污染的值传递给敏感参数之前,您需要执行明确的数据清理。有两种方法可以做到这一点。

方法一:

string rawPath = untaint req.rawPath;
var studentInfoResp = studentInfoEP->get(rawPath);

请注意此处的 untaint 关键字。您可以使用 untaint unary expression 简单地将受污染的值标记为安全。

方法二:

string rawPath = sanitizePath(req.rawPath);
var studentInfoResp = studentInfoEP->get(rawPath);

sanitizePath 函数通过使用 @untainted 注释修饰返回类型来验证路径并返回未受污染的值。

function sanitizePath(string rawPath) returns @untainted string {
string value = rawPath;
// Validate the path value and return
return value;
}

关于ballerina - 在 Ballerina 服务中调用后端时传递动态请求路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498112/

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