代码之家  ›  专栏  ›  技术社区  ›  Major Productions

网站安全-帮助我少吸

  •  4
  • Major Productions  · 技术社区  · 14 年前

    在网站安全方面,我有点落后。我知道基本原理——验证所有输入的数据,将转义数据保存到数据库,使用salt作为密码,等等。但是我觉得有很多东西我都不知道,它们会咬我的屁股。尤其是当我缓慢地迁移到.NET时。我只是不知道如何在.NET中复制我在PHP中知道的内容。下面是我一直在想的一些事情,我确信我需要帮助。

    问题:保护会话
    php:每当用户做一些重要的事情时,使用session_regent_id()。
    .NET:不知道如何在这里复制它。
    将军:我还缺什么?

    问题:XSS
    php:使用htmlentities()将潜在危险的代码转换成可以(大部分)无害地呈现的代码。
    .NET:我相信MVC,在视图中使用<%:%>标记也可以做到这一点。
    常规:还有更多我可以做的阻止javascript吗?完全拒绝HTML怎么样?如何保护文本区域?

    问题:远程执行
    php:使用regex查找和删除eval()函数调用。
    .net:毫不奇怪,不知道。
    将军:再说一遍,还有什么需要我去寻找的吗?

    问题:目录遍历(可能与上述相关)
    我只是不知道我该怎么担心这个。我也不知道如何阻止它。

    最受欢迎的建议、文章链接(带代码示例)等,我们将非常感谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   eglasius    14 年前

    会话重新生成ID

    我认为没有等价物。会话寿命很短,因此如果攻击者能够及时进入会话,那么在更改访问级别后也会发生这种情况。

    另外还有一点,会话并不意味着在ASP.NET中对用户进行身份验证。使用自定义身份验证时,使用表单身份验证。

    上面说,你做的任何事都会受到中间人的攻击。很多网站都是这样,所以cookie劫持是个问题。

    当做任何特殊的事情时,要求用户再次输入他们的密码/这应该通过https完成。如果需要执行一系列特殊操作,可以执行一次,但从那时起,请求/cookie需要通过https发送。在此上下文中,您可以发出一个修改过的表单身份验证cookie,该cookie允许访问特殊操作,并且需要打开HTTPS。

    我相信MVC,在视图中使用<%:%>标记也可以做到这一点。

    是的,这相当于<%=html.htmlencode(somestring)%>/加上一些防止双重编码的额外功能(应该查一下)。

    使用regex查找和删除eval()函数调用。

    在.NET中,你没有这么一个拥有如此广泛访问权限的速记员。如果你没有明确地做任何不寻常的事情,你很可能没事。

    目录遍历(可能与上述相关)

    使用mappath和类似工具。它实际上阻止了离开站点文件夹。这就是说,避免完全接收路径,因为您仍然可以意外地访问ASP.NET文件夹中的特殊文件。实际上,这是微软处理程序在填充Oracle漏洞时所发生的事情的一部分-更多信息 my blog

    您可以将CSRF添加到列表中。

    使用防伪令牌: http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

    填充Oracle攻击:

    在解决问题后,立即应用补丁。

    了解我在这里提到的所有内容: asp.net padding oracle: how it relates to getting the web.config, forging authentication cookies and reading other sensitive data . 了解其中的所有内容非常重要,特别是如果您使用了任何功能,即不想成为将敏感数据置于视图状态的用户:)

        2
  •  1
  •   Bruno    14 年前

    您可以添加 CSRF 到列表中。通过在应用程序的表单中添加隐藏的令牌(可能与cookie匹配),然后在处理提交的表单数据时检查两者是否匹配,可以防止出现这种情况。