在网站安全方面,我有点落后。我知道一些基本知识--验证所有输入的数据,将数据转储到数据库中,使用salt作为密码,等等。但是我觉得我错过了很多东西,可能会咬我的屁股。对于我向.NET的缓慢迁移来说尤其如此。我只是不知道如何在.NET中复制我所知道的内容。下面是我一直在考虑的一些事情,我确信我需要帮助。
问题:保护会话
PHP:每当用户做重要事情时使用session_regenerate_id()。
.NET:不知道怎么在这里复制它。
将军:我还遗漏了什么?
问题: XSS
PHP:使用that实体()将潜在的危险代码转换为可以(大多数情况下)无害地呈现的代码。
.NET:我相信MVC,在视图中使用<%:%>标记可以做同样的事情。
总括:我还能做些什么来阻止JavaScript吗?如何完全拒绝HTML呢?如何确保文本区域的安全?
问题:远程执行
PHP:使用regEx查找和删除eval()函数调用。
.NET:毫不奇怪,不知道。
将军:再说一遍,我还需要再找些什么吗?
问题:目录遍历(可能与上面的内容有关)
我只是不确定我该有多担心这个。我也不知道该怎么阻止它。
建议、文章链接(有代码示例)等都是最受欢迎的,并将不胜感激。
发布于 2010-09-24 05:49:31
session_regenerate_id
我不认为有类似的。会话是短暂的,因此如果攻击者将及时进入会话,那么在您更改访问级别之后也会发生这种情况。
另外,会话并不意味着在asp.net中对用户进行身份验证。使用自定义身份验证时,使用窗体身份验证。
上面说过,你做的任何事都会受到一个处于攻击中间的人的支配。很多网站都是这样,所以cookie劫持是个问题。
当做任何特殊的事情时,要求用户再次输入他们的密码/这应该通过https完成。如果您需要执行一系列特殊操作,您可以这样做一次,但从那时起,请求/cookie需要通过https发送。在这种情况下,您可以发出一个修改过的表单身份验证cookie,该cookie允许访问特殊操作,并且需要打开https。
我相信MVC,使用<%:视图中的%>标记可以做同样的事情。
是的,这相当于<%= Html.HtmlEncode(someString) %> /,有一些额外的东西可以防止双重编码(应该研究一下)。
使用regEx查找和删除eval()函数调用。
在.net中,您没有如此广泛的访问权限。如果你没有显式地做任何不寻常的事情,你很可能会没事。
目录遍历(可能与上面的内容相关)
使用MapPath和类似的。它实际上阻止了站点文件夹之外的操作。这就是说,完全避免接收路径,因为您仍然可以意外地访问asp.net文件夹中的特殊文件。事实上,这是Microsoft处理程序在填充oracle漏洞中发生的事情的一部分--关于我的博客的更多信息。
可以将CSRF添加到列表中。
使用防伪造令牌:http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/
填充甲骨文攻击:
应用工作周围&然后补丁一出来就快。
了解我在这里提到的所有内容:asp.net填充oracle:它与获取web.config、伪造身份验证cookie和读取其他敏感数据的关系如何?。了解其中的所有内容是很重要的,特别是如果您使用了任何特性,即您不想成为将敏感数据放入视图状态的人:)
发布于 2010-09-24 01:17:27
可以将CSRF添加到列表中。通过在应用程序的表单中添加隐藏令牌(可能与cookie匹配),然后在处理提交的表单数据时检查它们是否匹配,它们往往会被阻止。
https://stackoverflow.com/questions/3783554
复制相似问题