文本

利用selenium与owasp zap 集成实现自动化安全测试

除了所有手动的渗透测试外,我还可以通过此博客遍历所有读者,了解我们如何成功地将网站的自动安全扫描与CI集成selenium测试用例集成在一起。所以……就在一个月前,我们考虑将selenium测试用例与OWASP ZAP安全扫描集成在一起。 如果有些读者不知道什么是OWASP ZAP,请允许我向您简要介绍一下。OWASP ZAP是最受欢迎的免费安全工具。它可以帮助您自动找到Web应用程序中的安全漏洞,并且还是进行手动安全测试的好工具。 首先,让我们开始了解与selenium集成的手动安全性测试过程。因此,正在对ZAP工具提供的Web应用程序功能进行主动扫描。您只需输入Web应用程序URL,然后从OWASP ZAP工具手动开始扫描。基本上,OWASP ZAP使用代理设置。因此,所有扫描过程都是通过代理设置完成的。这全部涉及安全扫描的手动过程。 下一个任务是如何将扫描与我们现有的selenium测试套件集成在一起。首先是通过浏览器代理运行selenium测试用例。因此,我们通过在selenium测试用例代码中应用一些驱动程序功能来做到这一点。请注意,在执行测试用例时,您必须在后台运行ZAP工具。请参考以下示例代码:

from   selenium import webdriver
from   selenium.webdriver.remote.webelement import WebElement
from   selenium.webdriver.support.ui import WebDriverWait
from   selenium.common.exceptions import TimeoutException
import pytest
from zapv2 import ZAPv2
from selenium.webdriver.common.proxy import Proxy, ProxyType


prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = "127.0.0.1:8080"
prox.socks_proxy = "127.0.0.1:8080"
prox.ssl_proxy = "127.0.0.1:8080"
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
driver = webdriver.Chrome(desired_capabilities=capabilities)
apikey = ''
driver.get("https://www.test.com")
driver.close()
zap = ZAPv2(apikey=apikey)
sample = zap.core.htmlreport(apikey)
print(sample)
with open('test.html', 'w', encoding="utf8") as f:
    f.write(sample)

正如你所看到的,驱动程序功能的ip地址和端口号是相同的,在ZAP运行。这个集成的最后一部分是生成包含selenium测试用例的安全扫描结果的PDF文件。为此,我们使用ZAP api将结果导出为PDF文件。这些PDF文件与每日的selenium测试案例结果一起附加在slack中。

因为这对我来说是一种新的/不同的任务,我不知道如何在任何CI中实现这一点,因为在本地机器上可以轻松地运行ZAP接口。然后我询问了世界各地的一些志愿者,发现我们只需要在构建步骤中使用.bat或.sh文件来运行ZAP实例。

这就是我在集成ZAP安全扫描和selenium测试用例期间所做的工作。感谢你的阅读。

author

石头 磊哥 seven 随便叫

company

thoughtworks

大家好,本人不才,目前依旧混迹于thoughtworks,做着一名看起来像全栈的QA,兴趣爱好前端,目前是thoughtworks 西安QA社区的leader,如果有兴趣分享话题,或者想加入tw,可以找我

roles

QA(营生) dev(front-end dev 兴趣爱好)

联系方式

如果想转载或者高薪挖我 请直接联系我 哈哈

wechat:

qileiwangnan

email:

qileilove@gmail.com