有大量关于安全性设计和开发的优秀论文(甚至还有一大堆关于安全性的文章),但它们似乎都集中在你应该做什么( what you do )上。
然而,我所追求的是一份像黑客一样思考的清单。这是一个简单的操作列表,一旦你完成了开发,你就应该完成这些操作,以确保解决方案的安全性。
(更新:我最感兴趣的是黑盒检查列表-“转到页面,尝试这个和那个”之类的事情,但白盒检查列表可能也会感兴趣。)
这是我到目前为止想出的一些东西:
安全黑盒清单
<代码>H115自由格式输入是使用<代码>D18和javascript编码的自由格式输入
为了确保您约束输入并通过GET执行边界提交POST操作,为了确保“
http://www.example.com/foo?bar=HugeAmountOfData
,上传大小/格式不正确的文件(巨大文件、空文件、具有重命名扩展名的可执行文件等)以确保上载得到处理,以便从UI检查?)确保使用绝对URL作为没有正确权限的用户访问该URL,以确保通过操作/控制器对提供不存在的详细信息(如不存在的产品it、您无权访问的项目等)的URL进行明确的权限测试,确保通过HTTP returned.安全白盒检查清单
Web层。
[ValidateAntiForgeryToken]
属性,以防止跨站点请求伪造攻击。Response.Write
(直接或间接)从不用于显示用户输入。服务层。
中操作的信息泄露给client.
数据库层。
SELECT *
,但始终指定更新/删除存储过程在事务内操作的列的列表(通过@@TRANCOUNT
等),并显式地提交/回滚它。评论?更正?缺少步骤?
让它成为一个社区维基,你想怎么编辑就怎么编辑。
发布于 2010-02-09 06:18:23
要添加到列表,请执行以下操作:
Black: DoS攻击-使用tinyget或类似的方法来模拟DoS攻击,看看你的应用程序做了什么。
Black:规范化攻击。提到一点,可能会特别关注在下载情况下的目录遍历攻击。
怀特:使用cookie处理敏感信息?请参见cookies不用于敏感数据,并且不会在有意的时间间隔内保存在本地。黑色:在temp IE/XYZ文件夹中嗅探cookies。
Black:同样,使用脚本化的tinyget或手动尝试,看看暴力破解密码猜测是否有效,或者您的应用程序是否有智能的延迟/拒绝密码猜测攻击。
Black:执行任何攻击,看看管理员是否会自动收到攻击通知,或者只有攻击者知道它。
“确保您的安全决策不依赖于HTTP标头信息”- http标头用于ntml/kerberos身份验证?也许只是不要愚蠢地使用它们,不要发明或依赖referer,等等?
一般:使用商业黑盒/白盒安全扫描器,可能很昂贵,但可能很难进行安全回归测试。
发布于 2010-02-02 21:31:36
主要针对特定于MVC的内容:
<%:
和helpers,而不是原始的JsonRequestBehavior.AllowGet
的所有使用,以确保它不会返回数组。robots.txt
中使用经过验证、维护、现成的implementations.
发布于 2010-02-02 20:28:32
在每次请求( GET、POST或other )时,都会验证
时
https://stackoverflow.com/questions/2183890
复制相似问题