【问题标题】:web programming technique, is this a major security risk?网络编程技术,这是一个主要的安全风险吗?
【发布时间】:2010-02-24 22:32:09
【问题描述】:

我发现这种技术可以缩短一些编码时间。在我看来,不必重新创建与数据库相关的语句以及用于 web 控件的表单绑定器确实很有趣。但我想知道它是否应该被视为非 Intranet 项目的主要安全风险,因为它向用户显示了数据库结构

http://www.ironpythonresource.com/post/2008/08/23/IronPython-Dynamically-creating-objects-and-binding-them-to-a-form.aspx

现在我知道这个问题可能没有一个独特的纯粹客观的答案,但我希望将其标记为主观并使其成为社区 wiki 足以让它保持开放并获得一些 关于它的技术考虑

【问题讨论】:

  • “向用户展示数据库结构”是什么意思? ASP.NET html 代码看起来很标准,而用户看到的是修改后的版本。我没有看到任何特别可怕的东西。
  • 我的意思是你会知道映射到 web 控件的所有字段名称。在任何情况下都可以吗? (诚​​实的问题,没有讽刺的意思)
  • 这是一个有趣的问题。我还没有看到很多关于需要隐藏控件 ID 以使控件 ID 与数据库名称不匹配的讨论。当然,如果他们确实匹配,那么使用起来会容易得多。如果表命名为DatabaseTable,列命名为DatabaseColumn,控件命名为Control$DatabaseTable$DatabaseColumn,是否存在安全风险?需要考虑的事情。

标签: asp.net security ironpython


【解决方案1】:

这种确定要从表单数据更改的数据字段的方式肯定存在安全风险。

假设我有一个User 表,其中有一个IsAdmin 字段来确定谁对应用程序具有完全访问权限。在用户可以编辑自己的信息的表单中,IsAdmin 字段当然不包括在内,但是通过在发布页面之前简单地编辑页面(例如使用 FireBug),他们可以轻松地添加具有该名称的表单字段自动填充对象中的属性。他们只需要知道(或猜测)该字段的名称和放入的内容。瞧,我们又多了一个管理员!

【讨论】:

  • 如果您有特定的安全漏洞,隐藏控件名称可能无法挽救您。
  • 他所指出的确实非常有趣。不过,您可以注意到这一点,并在其他不包括访问权限和表单中缺少的字段的情况下使用该技术
  • 好吧,如果您对请求进行了注入(这很容易)但没有 ASP.NET 控件,我认为它不会被拉入页面空间,可以这么说。
  • 顺便说一句,您可以修改这些类以采用可选的列表参数,其中包含您不想从屏幕绑定的字段。您可以通过在创建 dbobject 时将 isadmin 字段作为参数传递并通过检查 dbobject
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多