我正在开发一个简单的芭蕾舞女演员应用程序,它可以恢复email给定名称(cntname).
string sqlString = "SELECT email FROM CONTACTS WHERE Name=?";
// Retrieve employee data by invoking select action defined in ballerina sql client
var ret = contactDB->select(sqlString, (),cntname);
Run Code Online (Sandbox Code Playgroud)
运行程序时出现此错误.
错误:contacts_db_service:0.0.0/hello_service.bal:56:86:传递给敏感参数'message'的污点值
返回的值extractName()(如下所示)将传递给cntname.
小智 4
Ballerina编译器内置了“污点分析器”,它支持Ballerina成为具有安全意识的编程语言。污点分析器将有助于防止许多安全漏洞,包括 SQLi、路径操作和 XXS。您可以浏览“如何编写安全的芭蕾舞演员程序”页面以了解有关此内容的更多信息。
\n\n但是,您执行 SQL 查询的方式是绝对正确的,并且不存在安全问题。查看错误消息,似乎第 56 行应该是调用caller->respond( resp )action 返回 HTTP 响应的位置。
为什么我建议这是因为这是我们为操作参数caller->respond( resp )设置一些值的位置。messagerespond
如果是这种情况,请检查您尝试发送的响应内容是否是经过完全验证的值。污点分析器检测到您要发送的响应包含不受信任(受污染)的数据,从而导致 XSS 或其他安全漏洞。您可以查看本博客文章的“污点分析\xe2\x80\x8a\xe2\x80\x94\xe2\x80\x8a示例”部分,以了解此错误如何发生以及如何正确验证数据并缓解此错误。
\n\n此外,如果您可以分享完整的 Ballerina 代码,我可以更新答案并提供有关如何解决确切问题的更多详细信息。
\n