首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >惠普加强360 a

惠普加强360 a
EN

Stack Overflow用户
提问于 2012-01-13 05:27:16
回答 2查看 10.4K关注 0票数 1

当扫描Asp.Net项目时出现了一个错误,即访问控制数据库,

上面写着

“没有适当的访问控制,执行包含用户控制的主键的SQL语句可以允许攻击者查看未经授权的记录。

尽管输入字段和数据被跨层(即前端(UI)->BUSINESS层->数据层)进行了适当的验证。

是否在控件或数据库上设置任何属性以解决此问题?

EN

回答 2

Stack Overflow用户

发布于 2012-01-20 15:44:08

“访问控制:数据库”是指从攻击者那里接收到数字输入数据,并提供给查询。它可能被验证为格式,比如“确保它是正整数”,但风险是如果攻击者控制了值,他可以更改查询的主键,得到不同的数据。

这与SQL注入不同,只是因为按照约定进行SQL注入意味着攻击者更改了查询的结构(例如,添加关键字)。当然,它们都是将内容注入到SQL中。

“控件或数据库上有属性吗.”不是的。

要正确验证此数据,

  1. 必须放置应用程序级控件,以确保攻击者只提供允许添加的主密钥。例如,您可以通过根本不给远程客户端赋值来做到这一点。您也许可以通过请求将其保存在会话中。
  2. 可以正确地解决一个完全合法的问题:在审计分析或主标记下拉列表中选择"Not“。输入注释,向安全主管解释为什么您认为逻辑是合理和安全的。使用不必要的愚蠢提交按钮提交评论。
  3. 可以正确地解决整个合法问题:我通常创建一个筛选器来隐藏访问控制:数据库问题,其中不受信任的数据源不是远程攻击者,而是数据库。

在本例中,查询1查找"Jane Doe“并获取她的foo ID。查询2查找ID = Jane's foo ID的另一个位置。该ID来自第一个数据库查询。这些数据将携带一个名为“数据库”的Fortify污染旗帜。您和您的安全审计师可能信任这一信息来源。或者,它可能被认为是另一个地方,黑客已经储存恶意数据,以支持颠覆你的应用程序。我也不知道。

在您和您的安全审计师信任数据库的情况下,您可以创建一个过滤器,“如果存在污染:数据库->隐藏问题”,然后将此筛选器放入项目模板的默认筛选集中。您可以使用审计工作台的工具->项目配置.对话。

票数 5
EN

Stack Overflow用户

发布于 2017-06-22 10:43:06

只要它直接来自用户,fortify就会警告您。它通常是假阳性的。Fortify期望,用户输入必须从另一个源(如数组)进行验证。

另一种修复方法是创建一个自定义dll,其中包含一个用于用户输入的验证函数。不要将用户参数直接传递给数据库层。使用自定义dll验证这些输入。那将%100起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8846332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档