验证您的网站

Ani*_*cho 9 c# asp.net security validation

除了以下内容之外,还需要验证哪些内容?这是我的问题.

对网站的任何输入进行适当验证非常重要:

  • 文本框等 - 使用.NET验证器(如果验证器不合适,则使用自定义代码)

  • 查询字符串或表单值 - 使用手动验证(转换为特定类型,边界检查等)

这与XSS可以揭示的问题有关.

基本上你必须验证某人可能篡改的任何输入:

  • 表单回发(主要是.NET控件 - 这些可以通过.NET验证控件进行验证.如果您在所有页面上启用了请求验证,这可以降低风险)

  • QueryString值

  • Cookie值

  • HTTP标头

  • Viewstate(只要您启用了ViewState MAC,就会自动为您完成)

  • Javascript(可以查看和更改所有JS,因此需要确保JavaScript不处理任何关键功能 - 即始终启用服务器端验证)

roo*_*ook 5

Web应用程序可能出现很多问题.你的清单非常全面,虽然它是重复的.http规范只声明,GET,POST,Cookie和Header.有许多不同类型的POST,但它们都在请求的同一部分.

对于你的列表,我还会添加与文件上传有关的所有内容,这是一种POST.例如,文件名,mime类型和文件的内容.我会启动一个像Wireshark这样的网络监控应用程序,请求中的所有内容都应该被认为是有害的.

永远不会有一个适合所有验证功能.如果你正在合并sql注入和xss卫生功能,那么你可能遇到麻烦.我建议使用自动化测试您的网站.类似的免费服务Sitewatch或类似的开源工具skipfish将检测你错过了攻击的方法.

另外,在旁注.使用MAC和/或加密传递视图状态是对密码术的严重滥用.当没有其他解决方案时,密码术是使用的工具.通过使用MAC或加密,您可以为攻击者打开强制此值或使用oracle padding攻击等利用您的权利打开大门.视图状态应由服务器跟踪,故事期末.

  • @Anicho我不是说在视图状态上禁用mac,我说这是解决问题的根本不安全的方法.有人提出这种观点的想法并不理解安全性. (2认同)