你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。

不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。


当前回答

曾经看到一扇门有人忘记锁门……

或者,看到一些JavaScript通过Ajax调用执行一些SQL。唯一的问题是,要运行的SQL与页面一起呈现,然后传递给服务…

其他回答

我曾见过法国一家高端国防承包商的高管使用Skype进行非常机密的会谈 (声明一下,Skype使用的是很久以前被破解的RC4加密算法)。

我想他们的无知可以被原谅,因为他们也使用Windows和MS-Word (为了记录,MS-Word保留了以前用这个模板编写的所有文档的历史)。

这引发了一些有趣的问题:纳税人的钱都花到哪里去了——这些钱是否被明智地使用了。

在密码数据输入元素中没有控制逻辑操作符(OR)。通过使用它,每个人都可以很容易地通过其他的条件。对于,select查询将像这样:

select *
from TheTable
where UserName=@id And Password=@pass OR 1=1

不是最坏的,但也足以造成一些真正的损害。你会惊讶于这一点被忽视的频率有多高。特别是当人们使用这些流行的框架时,

yourwebapp.com/items/edit.php?id=4
yourwebapp.com/items/delete.php?id=4

不确定项的所有者是请求页面的人。 也就是说,你可以登录你的账户,然后在整个应用程序中编辑或删除任何人的项目。

一个简单的检查可以防止很多损坏。

$item = // find your item by the $_GET[ 'id' ];

if( $_SESSION[ 'user_id' ] != $item[ 'user_id' ] ){
  // kick em out they dont belong...
}

我希望你能发现这里的问题。(事实上,大错特错):

String emailBody = "";

for (int i = 0; i < subscribers.Count; i++)
{
    emailBody += "Hello " + subscribers[i].FirstName + ",";
    emailBody += "this is a reminder with your account information: \n\n:";
    emailBody += "Your username: " + subscribers[i].Username + "\n";
    emailBody += "Your password: " + subscribers[i].Password + "\n";
    emailBody += "Have a great day!";

    emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}

最后一个接受者是最幸福的;)

我投票给Ken Thompson的UNIX“后门”。

这里有一个链接,有人可以从中了解更多信息: 汤普森木马编译器

我之所以认为这是最糟糕的,是因为在那个时候,法官们认为,在这种事情上取得进展的最好方法是公开讨论。

这一切只是教会了一群脚本小子一个新的非常强大的技巧。