根据我的经验,我们可以使用replace()
过滤&&
来|
防止命令注入。
我们的代码需要将base64String发送到另一个进程,但是有Stored Command Injection
checkmarx扫描,可以Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonFromDb))
处理吗?或者我们仍然需要更换
根据我的经验,我们可以使用replace()
过滤&&
来|
防止命令注入。
我们的代码需要将base64String发送到另一个进程,但是有Stored Command Injection
checkmarx扫描,可以Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonFromDb))
处理吗?或者我们仍然需要更换
好问题。我认为您仍然应该确保使用准备好的语句。Base64 仅包含 ABC(大写和小写)、数字、+
和/
作为=
最终填充字符的字母。这不提供字符作为引号等。
但是,如果有人决定使用不同的字母表会发生什么?如果有人认为 base 64 是浪费空间怎么办?因为如果您将现有文本转换为 base 64 肯定就是这样。然后您会突然遇到问题。
总而言之,使用准备好的语句更安全、更高效,是处理命令注入的最佳方式。作为额外的奖励,你会摆脱那个讨厌的 checkmarx。
如果绝对没有其他方法可以更改其他进程,并且如果无法达到该进程,我只会使用 base 64。在这种情况下,您可能希望使用 base64url,因为使用_
and-
而不是+
, /
and可能会做更少的事情=
。
但老实说,该代码需要立即清理。