当扫描Asp.Net项目时出现了一个错误,即访问控制数据库,
上面写着
“没有适当的访问控制,执行包含用户控制的主键的SQL语句可以允许攻击者查看未经授权的记录。
尽管输入字段和数据被跨层(即前端(UI)->BUSINESS层->数据层)进行了适当的验证。
是否在控件或数据库上设置任何属性以解决此问题?
发布于 2012-01-20 15:44:08
“访问控制:数据库”是指从攻击者那里接收到数字输入数据,并提供给查询。它可能被验证为格式,比如“确保它是正整数”,但风险是如果攻击者控制了值,他可以更改查询的主键,得到不同的数据。
这与SQL注入不同,只是因为按照约定进行SQL注入意味着攻击者更改了查询的结构(例如,添加关键字)。当然,它们都是将内容注入到SQL中。
“控件或数据库上有属性吗.”不是的。
要正确验证此数据,
在本例中,查询1查找"Jane Doe“并获取她的foo ID。查询2查找ID = Jane's foo ID的另一个位置。该ID来自第一个数据库查询。这些数据将携带一个名为“数据库”的Fortify污染旗帜。您和您的安全审计师可能信任这一信息来源。或者,它可能被认为是另一个地方,黑客已经储存恶意数据,以支持颠覆你的应用程序。我也不知道。
在您和您的安全审计师信任数据库的情况下,您可以创建一个过滤器,“如果存在污染:数据库->隐藏问题”,然后将此筛选器放入项目模板的默认筛选集中。您可以使用审计工作台的工具->项目配置.对话。
发布于 2017-06-22 10:43:06
只要它直接来自用户,fortify就会警告您。它通常是假阳性的。Fortify期望,用户输入必须从另一个源(如数组)进行验证。
另一种修复方法是创建一个自定义dll,其中包含一个用于用户输入的验证函数。不要将用户参数直接传递给数据库层。使用自定义dll验证这些输入。那将%100起作用。
https://stackoverflow.com/questions/8846332
复制相似问题