DrHEADer有助于审核响应单个请求或请求列表时接收的安全头。

drheader的Python项目详细描述


GitHub releaseGithub all releasesHitCountTotal alertsLanguage grade: PythonMIT license

欢迎使用drHEADer

在使用时,有许多HTTP报头可以增强网站的安全性。这些HTTP安全标头通常被忽略或未知,有助于防止使用时常见的web应用程序漏洞。在

DrHEADer有助于审核响应单个请求或请求列表的安全标头。在

当与OWASPApplication Security Verification Standard(ASVS)4.0结合使用时,它是一个非常有用的工具,可以将其作为自动CI/CD管道的一部分来包含,该管道用于检查丢失的HTTP报头。在

如何安装?在

这个项目是用python3.7.4开发的。 虽然它可以与Python 2.x配合使用,但即将出现终止生命(EOL),因此如果可能,请使用3.x。安装drHEADer的最简单方法是克隆此存储库,并通过终端窗口运行以下命令:

$ python3 setup.py install --user

这将安装所有的先决条件,最后得到一个drheader可执行文件。在

如何使用它?在

有两种方法可以使用drHEADer,这取决于您想要实现的目标。最简单的方法是使用CLI。在

CLI

drHEADer可以对目标执行一次扫描,并报告出现了哪些报头,如下所示:

^{pr2}$

如果您希望扫描多个站点,则需要JSON格式的目标或txt文件,如下所示:

[{"url":"https://example.com","params":{"example_parameter_key":"example_parameter_value"}},...]

对于txt文件,请使用以下命令:

$ drheader scan bulk -ff targets.txt

在批量扫描期间可以指定许多参数,这些参数包括: |选项|说明| | :---------------- | :----------------------------------------------------- | |-p,--post |使用post请求获取标头| |--json |将报告输出为json| |--调试|显示错误消息| |--规则文件名|使用自定义规则集| |--rules uri URL |使用自定义规则集,从远程服务器下载| |--merge |在默认集上合并自定义规则集| |--help |显示此消息并退出| |--junit在./reports/junit.xml文件夹中创建一个junit报告

要保存扫描结果,可以使用--json参数并将其管道传输到jq,这是一个轻量级且灵活的命令行json处理器,如下所示:

$ drheader scan single https://santander.co.uk --json | jq '.'

在项目中

也可以从现有项目中调用drHEADer,其实现方式如下:

fromdrheaderimportDrheader# create drheader instancedrheader_instance=Drheader(headers={'X-XSS-Protection':'1; mode=block'},status_code=200)report=drheader_instance.analyze()print(report)

自定义HTTP方法和头文件

默认情况下,该工具在发出请求时使用GET方法,但是可以通过提供method参数来更改该方法:

# create drheader instancedrheader_instance=Drheader(url="http://test.com",method="POST")

请记住,您可以使用requests支持的任何方法,如POST、PUT、GET和DELETE。在

同时,您可以自定义请求发送的头。为此,您只需使用request_headers参数:

# create drheader instancecustom_headers={"token":"1234aerhga"}drheader_instance=Drheader(url="http://test.com",request_headers=custom_headers)

随着我们继续开发drHEADer,我们将进一步增强这个功能。在

其他requests参数

可以包括requests支持的verify参数。默认值设置为True。在

# create drheader instancedrheader_instance=Drheader(url="http://test.com",verify=False)

将来可能会包含其他参数,例如timeoutallow_redirectsproxies。在

如何自定义drHEADer规则?在

DrHEADer依赖于一个yaml文件,该文件定义了审计安全头时将使用的策略。该文件位于./drheader/rules.yml,您可以自定义它以满足您的特定需要。如果你想知道更多,请按照这个link来做。在

注释

  • 在ubuntu系统上,您可能需要安装libyaml dev,以避免与缺少yaml.h相关的错误

路线图

我们对drHEADer有很多想法,因此会经常推出。有些事情y您将很快看到:

  • 在Python库上构建,以便更容易地嵌入到您自己的项目中。在
  • 发布API,它是从核心库中分离出来的-API允许您大规模地访问URL或端点
  • 更好地集成到MiTM代理中。在

幕后黑手是谁?在

DrHEADer由桑坦德英国安全工程团队开发,他们是:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像