当涉及到动态链接时,我有一个关于应用程序的安全性和完整性的问题。我想与libcrypto一起将应用程序发送到我的客户端。这样就可以对JWT令牌进行签名验证。理想情况下,我希望我的客户不要"黑客"。我的安全(我不想让他喂他自己的代币)。
让我们假设我的动态库有这样一个方法:
myLib.so
void verifyToken( std::string token ) {
if( externalLibVerifyToken( token ) ) {
// verified
} else {
// not verified
}
}
外部库(例如libcrypto.so):
bool externalLibVerifyToken( std::string token ) { /* verify it and return */ }
现在,我的应用程序附带了myLib。还有libcrypto。所以使用动态C链接(std::string只是举个例子)
如果有人,例如目标受众,替换了libcrypto。那么另一个,暴露同样的符号,但绕过所有的验证?从技术上讲,他们可能会搞砸我的验证策略,对吗?
第二个问题:我能减轻这种情况吗?当然我可以使用libcrypto。并将其嵌入到mylib中。所以,也许有更好的策略呢?
作为软件开发人员,您依赖于运行软件的计算机和操作系统的安全性。
如果有管理员权限的用户想要入侵你的软件,你几乎无能为力。试想一下,这不仅仅是替换动态库,而且他(用户)甚至可以修改软件并完全删除if
语句。
如果用户是你的敌人,只需在你的安全服务器上运行软件&控制。