芭蕾舞女演员:传递给敏感参数的污染值
ballerina: tainted value passed to sensitive parameter
我是芭蕾舞新手。我想从命令行获取用户参数并将其设置为 json 负载。
像这样:
ballerina run client.bal testInput
以下是我的client.bal
endpoint http:Client clientEndpoint {
url: "http://localhost:9090"
};
function main(string... args) {
http:Request req = new;
string userInput = args[0];
json jsonMsg = {input: userInput};
req.setJsonPayload(jsonMsg);
但是当我这样做时,我得到了一个编译错误:被污染的值传递给了敏感参数'payload'
我尝试如下进行验证,但仍然出现错误。
string userInput = "empty";
if(!(args[0] == "")) {
userInput = args[0];
}
有谁知道解决这个问题的方法。
我搜索了有关芭蕾舞女演员污染检查的信息。 HTTP 客户端调用中的路径参数被指定为安全敏感的。将不受信任的数据传递到安全敏感参数时,编译器会生成错误
"untaint" 一元表达式可用于表示过程值是可信的。但必须进行适当的数据验证以确保输入不会导致安全威胁。
因此我们可以这样修复编译错误。
json jsonMsg = {input: untaint userInput};
但始终验证输入很重要。干杯!!!
未污染的一元表达式是修复此处编译错误的快速方法。但正确的做法是在将内容传递到安全函数之前对其进行适当的验证。
例如,我们可以有一个 validate/sanitize 函数,它在进行如下验证后获取受污染的值和 return 未受污染的值。
function validate(string input) returns @untainted string {
string regEx = "[^a-zA-Z]";
return input.replace(regEx, "");
}
在上面的例子中,通过使用@untainted
注解,我们可以将函数return的值标记为未污染的值。现在可以将该值直接传递到需要未受污染值的安全函数中。所以我们可以重写你的例子如下。
import ballerina/http;
endpoint http:Client clientEndpoint {
url: "http://localhost:9090"
};
function main(string... args) {
http:Request req = new;
string userInput = validate(args[0]);
json jsonMsg = {input: userInput};
req.setJsonPayload(jsonMsg);
// rest of the program
}
function validate(string input) returns @untainted string {
string regEx = "[^a-zA-Z]";
return input.replace(regEx, "");
}
以上验证函数只是一个示例而已。但是根据需要,我们可以编写函数来进行实际验证和 return 安全内容。如需更多信息,请访问:https://ballerina.io/learn/by-example/taint-checking.html
我是芭蕾舞新手。我想从命令行获取用户参数并将其设置为 json 负载。 像这样:
ballerina run client.bal testInput
以下是我的client.bal
endpoint http:Client clientEndpoint {
url: "http://localhost:9090"
};
function main(string... args) {
http:Request req = new;
string userInput = args[0];
json jsonMsg = {input: userInput};
req.setJsonPayload(jsonMsg);
但是当我这样做时,我得到了一个编译错误:被污染的值传递给了敏感参数'payload'
我尝试如下进行验证,但仍然出现错误。
string userInput = "empty";
if(!(args[0] == "")) {
userInput = args[0];
}
有谁知道解决这个问题的方法。
我搜索了有关芭蕾舞女演员污染检查的信息。 HTTP 客户端调用中的路径参数被指定为安全敏感的。将不受信任的数据传递到安全敏感参数时,编译器会生成错误
"untaint" 一元表达式可用于表示过程值是可信的。但必须进行适当的数据验证以确保输入不会导致安全威胁。
因此我们可以这样修复编译错误。
json jsonMsg = {input: untaint userInput};
但始终验证输入很重要。干杯!!!
未污染的一元表达式是修复此处编译错误的快速方法。但正确的做法是在将内容传递到安全函数之前对其进行适当的验证。
例如,我们可以有一个 validate/sanitize 函数,它在进行如下验证后获取受污染的值和 return 未受污染的值。
function validate(string input) returns @untainted string {
string regEx = "[^a-zA-Z]";
return input.replace(regEx, "");
}
在上面的例子中,通过使用@untainted
注解,我们可以将函数return的值标记为未污染的值。现在可以将该值直接传递到需要未受污染值的安全函数中。所以我们可以重写你的例子如下。
import ballerina/http;
endpoint http:Client clientEndpoint {
url: "http://localhost:9090"
};
function main(string... args) {
http:Request req = new;
string userInput = validate(args[0]);
json jsonMsg = {input: userInput};
req.setJsonPayload(jsonMsg);
// rest of the program
}
function validate(string input) returns @untainted string {
string regEx = "[^a-zA-Z]";
return input.replace(regEx, "");
}
以上验证函数只是一个示例而已。但是根据需要,我们可以编写函数来进行实际验证和 return 安全内容。如需更多信息,请访问:https://ballerina.io/learn/by-example/taint-checking.html