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

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


当前回答

2007年,一家相当大的机构的国防部网站出现了错误配置,导致IIS web服务器提供原始代码,主页中有硬编码的用户名/密码和数据库服务器信息。幸运的是,它很快就被抓住了,但我确实目睹了它,这非常令人震惊。不用说,他们的网站被网络工程师关闭了,直到开发人员修复了糟糕的代码。

其他回答

一些验证码是这样的:

public bool charsEquals(char[] input, char[] txt)
{
    for (int i = 0; i < Math.min(input.length; txt.length); ++i)
    {
        if (input[i] != txt[i]) return false;
    }
    return true;
}

像这样使用它:

if (charsEquals(inputPassword, requestedPassword))

看了YouTube上关于Tux和比尔·盖茨之战的搞笑视频后,我开始思考这个问题。当Tux没有密码进入微软大楼时。

将用户名列表以明文形式发送给浏览器以供JavaScript自动补全,还可以通过使用唯一的用户id调整URL查询字符串来查看用户数据,这可以从自动补全功能中收集到。

当我第一次加入我现在工作的公司时,我的老板正在查看一个潜在新客户的现有电子商务网站。这是在IIS和电子商务的相当早期,我们可以说,安全性不那么严格。

长话短说,他改变了一个URL(只是出于好奇),并意识到目录浏览并没有关闭,所以你可以把URL末尾的页面名称剪掉,然后看到web服务器上的所有文件。

最后我们浏览了一个文件夹,里面有一个Access数据库,我们下载了这个数据库。它是整个电子商务客户/订单数据库,充满了数千个未加密的信用卡号码。

public class AuthenticationServlet extends HttpServlet
{
    private String userName;
    private String password;

    protected doPost(HttpServletRequest req, HttpServletResponse resp)
           throws ServletException, IOException
    {
        userName = request.getParameter("userName");
        password = request.getParameter("password");
        authenticateUser(userName,password);
        ......
    }
}

显然,正如有人在自动化负载测试中发现的那样,单例和缺乏同步会导致安全问题。

http://apache.org/.svn/entries