在网站安全方面,我有点落后于时代.我知道基础知识 – 验证所有传入的数据,转义数据保存到数据库,使用盐密码等等.但我觉得有很多我想念的东西可以咬我的屁股.我慢慢迁移到.NET时尤其如此.我只是不确定如何在
PHP中复制我在
PHP中所知道的内容.所以,下面是我一直在思考的一些事情,我确信我需要帮助.
问题:确保会话安全
PHP:只要用户执行重要操作,就使用session_regenerate_id().
.NET:不知道如何在这里复制它.
将军:我还缺少什么?
问题:XSS
PHP:使用htmlentities()将潜在危险的代码转换为可以(大多数)无害地呈现的内容.
.NET:我相信MVC,使用<%:%>视图中的标签做同样的事情.
将军:我可以做更多阻止JavaScript吗?完全拒绝HTML怎么样?如何保护textarea?
问题:远程执行
PHP:使用regEx查找和删除eval()函数调用.
.NET:不出所料,不知道.
将军:再说一遍,还有更多我应该寻找的吗?
问题:目录遍历(可能与上述有关)
我只是不确定我应该对此感到多么担心.我也不确定如何阻止它.
建议,文章链接(带代码示例)等是非常受欢迎的,非常感谢.
最佳答案
session_regenerate_id
我认为没有相应的东西.会话是短暂的,所以如果攻击者及时进入会话,那么在更改访问级别之后也应如此.
另外一点是会话不是要在asp.net中验证用户.使用自定义身份验证时,您使用Forms身份验
如上所述,你所做的任何事情都受到中间人攻击的影响.许多网站就是这种情况,因此cookie劫持是一个全面的问题.
在做任何特别的事情时,要求用户再次输入密码/应该通过https进行.如果您需要执行一系列特殊操作,您可以执行一次,但从那时起,请求/ cookie需要通过https发送.在此上下文中,您可以发出修改后的表单身份验证cookie,该cookie允许访问特殊操作并且需要https.
I believe in MVC, using <%: %> tags in a view does the same thing.
是的,这相当于<%= Html.HtmlEncode(someString)%> /有一些额外的东西来防止双重编码(应该看看).
Use regEx to find and remove eval() function calls.
在.net中,你没有这么宽泛的访问速度.如果你没有明确地做任何与众不同的事情,你可能会好的.
Directory Traversal (probably related to the above)
使用MapPath和类似的.它实际上阻止了到站点文件夹之外.这就是说,完全避免接收路径,因为你仍然可以无意中访问asp.net文件夹中的特殊文件.事实上,这是填充oracle漏洞中微软处理程序发生的一部分 – 更多在my blog
You can add CSRF to the list.
padding oracle attack:
应用工作和解决方案然后补丁一出来.
了解我在这里提到的所有内容:asp.net padding oracle: how it relates to getting the web.config, forging authentication cookies and reading other sensitive data.了解所有内容非常重要,特别是如果您使用任何功能,即您不希望成为在视图状态下放置敏感数据的那个:)