我们知道,由于缺乏验证而测试输入参数是黑匣子web漏洞评估的一部分,但是,是否有必要测试所有输入参数(参数、cookie、HTTP标头、URL.)?如果我们不测试一个参数,那么该参数可能是易受SQL注入或XSS攻击的参数。
排序是常见的答案之一,但是,如果完全非关键功能中的SQL注入打开了对数据库的访问权限,使攻击者能够完全控制数据库,那么如何确定优先级呢?
如果我们必须选择输入元素的样本,如何选择该样本?
在选择要测试哪些输入参数时,
。
注意:我知道正确的做法是测试所有参数,但由于时间限制,有时这是不现实的。
发布于 2013-07-16 03:12:32
即使某个功能被认为不重要,您也始终需要评估您的攻击对应用程序和存储在应用程序中的信息的影响。相反,如果您有一个利用漏洞的关键功能,但实际上无法从它获得任何有价值的信息,那么您应该降低修复它的优先级。因此,利用漏洞的影响是重要的,而不是您正在利用的函数的关键程度。需要根据影响来确定优先次序。
发布于 2013-07-16 10:31:56
答案肯定是“是”、“否”和“视情况而定”。问这个问题的更好的方法是“知道我的资源有限,我应该如何优先审查我的网络应用程序?”
在安全方面,成功并不被定义为100%安全。成功应该被定义为将风险降低到一个可接受的水平。您的“可接受的风险水平”应该基于您的应用程序做了什么,它保护了什么,如果发生了一些不好的事情,后果是什么。我希望对运行我的起搏器的代码做更多的评论,而不是我花一美元买的Android游戏。
对于99%的组织来说,资源是有限的。你不太可能有足够的资源来全面测试你的web应用程序的各个方面。您必须了解您有哪些资源可供审查,然后优先排序。
每个应用程序都是不同的,因此您应该做出自己的判断,但以下是一些我会优先考虑的事情:
作为SQL查询的一部分使用的输入(SQL注入)
作为已执行命令的一部分使用的输入(命令注入)
用作LDAP查询的一部分的输入(ldap注入)
从一个用户返回到其他用户的输入(持久化XSS)
从一个用户返回回显给该用户的输入(反映XSS)
作为修改用户帐户的操作的一部分的输入
作为任何复杂处理的一部分使用的输入(资源耗尽DOS)
传递给任何以提升的权限运行的进程的输入。
此外,你知道你不能详尽地检查你的web应用程序的每一个方面,你可以通过添加额外的缓解措施来“欺骗”:
在没有提升权限的情况下运行web服务器
数据库访问帐户应具有最低权限。
为不同类型的数据库访问设置单独的帐户。如果95%的DB调用是只读的,则不要使用具有写入权限的帐户。
发布于 2013-07-16 07:49:02
正如其他人指出的那样,简单的回答是肯定的,有必要测试所有的输入参数,因为当涉及到它时,您不知道应用程序的编码有多好或有多差。
然而,正如你已经说过的,当有不现实的最后期限从业务线-谁没有一个更好的说法,真的不关心的时候,这是不可能的。
OWASP可能能够提示您应该优先考虑哪些字符。例如:http://owasp.org/index.php/SQL_注入_预防_作弊_板材 (OWASP网站)
但是,说到这里,您现在已经创建了更大的工作负载。您必须检查每个可能的漏洞,并确定哪些字符是特定于该漏洞的。
单独的任务可能需要更长的时间(至少在最初)比测试所有字符更长,而且不会那么彻底。(不用说)
https://security.stackexchange.com/questions/39014
复制相似问题