【发布时间】:2011-12-17 08:28:24
【问题描述】:
无论使用哪种语言,我总是对if 的安全概念感到困惑。我编写的所有代码都依赖于 if 语句的那一行的成功:
user = getUserName();
password = getPassword();
if (match(user, password)) {
print secret information;
}
由于只有一行,我觉得破坏可以相对简单。我是否忽略了一些事情,或者单个 if 真的是最好的方法吗?
【问题讨论】:
-
“破坏”?如果攻击者拥有对源代码的写入权限,那么无论如何你都会被搞砸³。此外,还有什么替代方案?让整个逻辑如此复杂和模糊,以至于攻击者和维护者都无法理解它?即便如此,任何严重的攻击者将通过任何混淆和复杂的安全方案进行工作 - 只需看看音乐、电影、视频游戏等的盗版。
-
不,我问的是来自外部的攻击。
-
攻击者如何在没有访问权限的情况下攻击您的代码?
-
@Mikhail,我希望我的储蓄账户不受一条线的保护,而是由一组深入了解安全并审查所有相关代码的人保护。
-
我和@svick 有同样的希望,但如果最后,在 SSL 和加密、散列、加盐和牺牲一只山羊来击退邪恶的攻击者之后,我也不会感到惊讶,是否允许访问我的银行账户的决定是使用
if声明来实现的,这些专家理所当然地认为整个事情是安全的。我不认为if有什么特别之处 - 你必须 分支以某种方式 定义,无论是通过if、多态性,甚至是聪明的间接跳。这是关于决定本身(条件)是否可以被操纵。
标签: security if-statement logic