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

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


当前回答

我在The Daily WTF上看到过这个。

<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
    if (form.id.value=="buyers") { 
        if (form.pass.value=="gov1996") {              
            location="http://officers.federalsuppliers.com/agents.html" 
        } else {
            alert("Invalid Password")
        }
    } else {  
        alert("Invalid UserID")
    }
}
//-->
</script>

恕我直言,没有什么比这更好的了。

其他回答

有一家银行通过其网站提供一些服务。开发人员考虑了任何作为整个系统的有效用户登录的人,他们使用URL来识别账号,因此只需更改URL上的ID,就可以查看其他账户的余额。

对于认为身份验证和授权是一回事的web开发人员来说,这是非常糟糕的。

此外,银行不通过其网站转账也很好,否则有些人会很富有;-)

我们工作时的手机。

你必须用你的4位ID登录,然后按#,然后输入你的4位密码和#。但如果你不输入任何密码并按#,它就会让你登录。

Failphone失败。

我记得申请大学的通用应用程序网站有这个“安全”功能,它宣布将在一定时间后注销你。但是,他们使用了一个警告框,如果你没有真正回应,就会暂停倒计时,使你的会话无限期。

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

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...
}

整个经典ASP购物车“Comersus”。整个事情是意大利面条代码的混乱,所有的SQL语句都是成熟的SQL注入,因为没有做任何过滤。可悲的是,我不幸地处理了近两年的“申请”,这绝对是一场噩梦!