比特派app下载载苹果版|zap

作者: 比特派app下载载苹果版
2024-03-07 22:19:27

Go 第三方 log 库之 zap 使用 - 掘金

Go 第三方 log 库之 zap 使用 - 掘金

首页 首页

沸点

课程

直播

活动

竞赛

商城

APP

插件 搜索历史

清空

创作者中心

写文章 发沸点 写笔记 写代码 草稿箱 创作灵感

查看更多

会员

登录

注册

Go 第三方 log 库之 zap 使用

江湖十年

2023-03-27

1,326

首发地址:jianghushinian.cn/2023/03/19/…

zap 是由 Uber 公司开源的一款 Go 日志库,就像它的命名一样,zap 以快著称。官方 GitHub 仓库中只用一句话来概括 zap:「在 Go 中进行快速、结构化、分级的日志记录」。这句话简单明了的概括了 zap 的核心特性,今天我们就来介绍下 zap 日志库的基本使用和高级特性,以及如何在实际应用程序中使用,来提高应用程序的可靠性。

特点

zap 具有如下特点:

快,非常快,这也是 zap 最显著的特点。速度快的原因是 zap 避免使用 interface{} 和反射,并且使用 sync.Pool 减少堆内存分配。在 zap 面前 Logrus 的执行速度只有被吊打的份,你可以在官方 GitHub 仓库中看到 zap 与不同日志库的速度对比。

支持结构化日志记录。这是一个优秀的日志库必备功能。

支持七种日志级别:Debug、Info、Warn、Error、DPanic、Panic、Fatal,其中 DPanic 是指在开发环境下(development)记录日志后会进行 panic。

支持输出调用堆栈。

支持 Hooks 机制。

使用

基本使用

zap 基本使用方式如下:

package main

import (

"time"

"go.uber.org/zap"

)

func main() {

// 生产环境

{

logger, _ := zap.NewProduction()

defer logger.Sync() // 刷新 buffer,保证日志最终会被输出

url := "https://jianghushinian.cn/"

logger.Info("production failed to fetch URL",

zap.String("url", url), // 因为没有使用 interface{} 和反射机制,所以需要指定具体类型

zap.Int("attempt", 3),

zap.Duration("backoff", time.Second),

)

}

// 开发环境

{

logger, _ := zap.NewDevelopment()

defer logger.Sync()

url := "https://jianghushinian.cn/"

logger.Debug("development failed to fetch URL",

zap.String("url", url),

zap.Int("attempt", 3),

zap.Duration("backoff", time.Second),

)

}

}

zap 针对生产环境和开发环境提供了不同的函数来创建 Logger 对象。

如果想在日志后面追加 key-value,则需要根据 value 的数据类型使用 zap.String、zap.Int 等方法实现。这一点在使用上显然不如 Logrus 等其他日志库来的方便,但这也是 zap 速度快的原因之一,zap 内部尽量避免使用 interface{} 和反射来提高代码执行效率。

记录日志的 logger.Xxx 方法签名如下:

func (log *Logger) Info(msg string, fields ...Field)

其中 fields 是 zapcore.Field 类型,用来存储 key-value,并记录 value 类型,不管是 zap.String 还是 zap.Int 底层都是 zapcore.Field 类型来记录的。zap 为每一种 Go 的内置类型都定义了对应的 zap.Xxx 方法,甚至还实现 zap.Any() 来支持 interface{}。

执行以上代码,控制台得到如下输出:

{"level":"info","ts":1679212318.10218,"caller":"zap/main.go:16","msg":"production failed to fetch URL","url":"https://jianghushinian.cn/","attempt":3,"backoff":1}

2023-03-19T15:51:58.102+0800 DEBUG zap/main.go:29 development failed to fetch URL {"url": "https://jianghushinian.cn/", "attempt": 3, "backoff": "1s"}

可以发现,通过 zap.NewProduction() 创建的日志对象输出格式为 JSON,而通过 zap.NewDevelopment() 创建的日志对象输出格式为 Text,日志后面追加的 key-value 会被转换成 JSON。并且,两者输出的字段内容也略有差异,如生产环境日志输出的时间格式为 Unix epoch 利于程序解析,而开发环境日志输出的时间格式为 ISO8601 更利于人类阅读。

导致以上这些差异的原因是配置不同,我们来看下 zap.NewProduction 和 zap.NewDevelopment 的代码实现:

func NewProduction(options ...Option) (*Logger, error) {

return NewProductionConfig().Build(options...)

}

func NewProductionConfig() Config {

return Config{

Level: NewAtomicLevelAt(InfoLevel),

Development: false,

Sampling: &SamplingConfig{

Initial: 100,

Thereafter: 100,

},

Encoding: "json",

EncoderConfig: NewProductionEncoderConfig(),

OutputPaths: []string{"stderr"},

ErrorOutputPaths: []string{"stderr"},

}

}

func NewDevelopment(options ...Option) (*Logger, error) {

return NewDevelopmentConfig().Build(options...)

}

func NewDevelopmentConfig() Config {

return Config{

Level: NewAtomicLevelAt(DebugLevel),

Development: true,

Encoding: "console",

EncoderConfig: NewDevelopmentEncoderConfig(),

OutputPaths: []string{"stderr"},

ErrorOutputPaths: []string{"stderr"},

}

}

可以看到,两者在实现思路上是一样的,都是先创建一个配置对象 zap.Config,然后再调用配置对象的 Build 方法来构建 Logger。

zap.Config 定义如下:

type Config struct {

Level AtomicLevel `json:"level" yaml:"level"`

Development bool `json:"development" yaml:"development"`

DisableCaller bool `json:"disableCaller" yaml:"disableCaller"`

DisableStacktrace bool `json:"disableStacktrace" yaml:"disableStacktrace"`

Sampling *SamplingConfig `json:"sampling" yaml:"sampling"`

Encoding string `json:"encoding" yaml:"encoding"`

EncoderConfig zapcore.EncoderConfig `json:"encoderConfig" yaml:"encoderConfig"`

OutputPaths []string `json:"outputPaths" yaml:"outputPaths"`

ErrorOutputPaths []string `json:"errorOutputPaths" yaml:"errorOutputPaths"`

InitialFields map[string]interface{} `json:"initialFields" yaml:"initialFields"`

}

每个配置项说明如下:

Level: 日志级别。

Development: 是否为开发模式。

DisableCaller: 禁用调用信息,值为 true 时,日志中将不再显示记录日志时所在的函数调用文件名和行号。

DisableStacktrace: 禁用堆栈跟踪捕获。

Sampling: 采样策略配置,单位为每秒,作用是限制日志在每秒内的输出数量,以此来防止全局的 CPU 和 I/O 负载过高。

Encoding: 指定日志编码器,目前支持 json 和 console。

EncoderConfig: 编码配置,决定了日志字段格式。

OutputPaths: 配置日志输出位置,URLs 或文件路径,可配置多个。

ErrorOutputPaths: zap 包内部出现错误的日志输出位置,URLs 或文件路径,可配置多个,默认 os.Stderr。

InitialFields: 初始化字段配置,该配置的字段会以结构化的形式打印在每条日志输出中。

我们再来对比下 NewProductionEncoderConfig() 和 NewDevelopmentEncoderConfig() 这两个配置的不同:

func NewProductionEncoderConfig() zapcore.EncoderConfig {

return zapcore.EncoderConfig{

TimeKey: "ts",

LevelKey: "level",

NameKey: "logger",

CallerKey: "caller",

FunctionKey: zapcore.OmitKey,

MessageKey: "msg",

StacktraceKey: "stacktrace",

LineEnding: zapcore.DefaultLineEnding,

EncodeLevel: zapcore.LowercaseLevelEncoder,

EncodeTime: zapcore.EpochTimeEncoder,

EncodeDuration: zapcore.SecondsDurationEncoder,

EncodeCaller: zapcore.ShortCallerEncoder,

}

}

func NewDevelopmentEncoderConfig() zapcore.EncoderConfig {

return zapcore.EncoderConfig{

// Keys can be anything except the empty string.

TimeKey: "T",

LevelKey: "L",

NameKey: "N",

CallerKey: "C",

FunctionKey: zapcore.OmitKey,

MessageKey: "M",

StacktraceKey: "S",

LineEnding: zapcore.DefaultLineEnding,

EncodeLevel: zapcore.CapitalLevelEncoder,

EncodeTime: zapcore.ISO8601TimeEncoder,

EncodeDuration: zapcore.StringDurationEncoder,

EncodeCaller: zapcore.ShortCallerEncoder,

}

}

对比来看,两者有很多不同的配置,比如生产环境下 EncodeTime 值为 zapcore.EpochTimeEncoder,开发环境下 EncodeTime 值为 zapcore.ISO8601TimeEncoder。这就是生产环境日志输出的时间格式为 Unix epoch 而开发环境日志输出的时间格式为 ISO8601 的原因。

zapcore.EncoderConfig 其他几个常用的配置项说明如下:

MessageKey: 日志信息的键名,默认 msg。

LevelKey: 日志级别的键名,默认 level。

TimeKey: 日志时间的键名。

EncodeLevel: 日志级别的格式,默认为小写,如 info。

除了提供 zap.NewProduction() 和 zap.NewDevelopment() 两个构造函数外,zap 还提供了 zap.NewExample() 来创建一个 Logger 对象,这个方法主要用于测试,这里就不多介绍了。

给语法加点糖

zap 虽然速度足够快,但是多数情况下,我们并不需要极致的性能,而是想让代码写起来更爽一些。zap 为我们提供了解决方案 —— SugaredLogger。

package main

import (

"time"

"go.uber.org/zap"

)

func main() {

logger, _ := zap.NewProduction()

defer logger.Sync()

url := "https://jianghushinian.cn/"

sugar := logger.Sugar()

sugar.Infow("production failed to fetch URL",

"url", url,

"attempt", 3,

"backoff", time.Second,

)

sugar.Info("Info")

sugar.Infof("Infof: %s", url)

sugar.Infoln("Infoln")

}

通过 logger.Sugar() 方法可以将一个 Logger 对象转换成一个 SugaredLogger 对象。

SugaredLogger 提供了更人性化的接口,日志中追加 key-value 时不在需要 zap.String("url", url) 这种显式指明类型的写法,只需要保证 key 为 string 类型,value 则可以为任意类型,能够减少我们编写的代码量。

此外,为了满足不同需求,SugaredLogger 提供了四种方式输出日志:sugar.Xxx、sugar.Xxxw、sugar.Xxxf、sugar.Xxxln。

执行以上代码,控制台得到如下输出:

{"level":"info","ts":1679217743.5967638,"caller":"zap/sugar.go:15","msg":"production failed to fetch URL","url":"https://jianghushinian.cn/","attempt":3,"backoff":1}

{"level":"info","ts":1679217743.5969589,"caller":"zap/sugar.go:20","msg":"Info"}

{"level":"info","ts":1679217743.5969741,"caller":"zap/sugar.go:21","msg":"Infof: https://jianghushinian.cn/"}

{"level":"info","ts":1679217743.5969841,"caller":"zap/sugar.go:22","msg":"Infoln"}

我们知道,这种方便的写法是有一定代价的,所以开发中是否需要使用 SugaredLogger 来记录日志,需要根据程序的特点来决定。SugaredLogger 与 Logger 的性能对比同样可以在官方 GitHub 仓库中看到。

定制 Logger

通过查看 zap.NewProduction() 和 zap.NewDevelopment() 两个构造函数源码,我们知道可以使用 zap.Config 对象的 Build 方法创建 Logger 对象。那么我们很容易能够想到,如果要定制 Logger,只需要创建一个定制的 zap.Config 即可。

package main

import (

"go.uber.org/zap"

"go.uber.org/zap/zapcore"

)

func newCustomLogger() (*zap.Logger, error) {

cfg := zap.Config{

Level: zap.NewAtomicLevelAt(zap.DebugLevel),

Development: false,

Encoding: "json",

EncoderConfig: zapcore.EncoderConfig{

TimeKey: "time",

LevelKey: "level",

NameKey: "logger",

CallerKey: "", // 不记录日志调用位置

FunctionKey: zapcore.OmitKey,

MessageKey: "message",

LineEnding: zapcore.DefaultLineEnding,

EncodeLevel: zapcore.LowercaseLevelEncoder,

EncodeTime: zapcore.RFC3339TimeEncoder,

EncodeDuration: zapcore.SecondsDurationEncoder,

EncodeCaller: zapcore.ShortCallerEncoder,

},

OutputPaths: []string{"stdout", "test.log"},

ErrorOutputPaths: []string{"error.log"},

}

return cfg.Build()

}

func main() {

logger, _ := newCustomLogger()

defer logger.Sync()

// 增加一个 skip 选项,触发 zap 内部 error,将错误输出到 error.log

logger = logger.WithOptions(zap.AddCallerSkip(100))

logger.Info("Info msg")

logger.Error("Error msg")

}

以上代码通过 newCustomLogger 函数创建了一个自定义的 Logger,同样通过先定义一个 zap.Config 然后再调用其 Build 方法来实现。

配置日志分别输出到标准输出和 test.log 文件,执行以上代码,控制台和 test.log 都会得到如下输出:

{"level":"info","time":"2023-03-19T19:19:18+08:00","message":"Info msg"}

{"level":"error","time":"2023-03-19T19:19:18+08:00","message":"Error msg"}

另外,我们还通过 logger.WithOptions() 为 Logger 对象增加了一个选项 zap.AddCallerSkip(100),这个选项的作用是指定在通过调用栈获得行号时跳过的调用深度,因为我们的函数调用栈并不是 100 层,所以会触发 zap 内部错误,zap 会将错误日志输出到 ErrorOutputPaths 配置指定的位置中,即 error.log。

error.log 得到的错误日志如下:

2023-03-19 11:19:18.438824 +0000 UTC Logger.check error: failed to get caller

2023-03-19 11:19:18.44921 +0000 UTC Logger.check error: failed to get caller

logger.WithOptions() 支持的选项如下:

WrapCore(f func(zapcore.Core) zapcore.Core): 使用一个新的 zapcore.Core 替换掉 Logger 内部原有的的 zapcore.Core 属性。

Hooks(hooks ...func(zapcore.Entry) error): 注册钩子函数,用来在日志打印时同时调用注册的钩子函数。

Fields(fs ...Field): 添加公共字段。

ErrorOutput(w zapcore.WriteSyncer): 指定日志组件内部出现异常时的输出位置。

Development(): 将日志记录器设为开发模式,这将使 DPanic 级别日志记录错误后执行 panic()。

AddCaller(): 与 WithCaller(true) 等价。

WithCaller(enabled bool): 指定是否在日志输出内容中增加调用信息,即文件名和行号。

AddCallerSkip(skip int): 指定在通过调用栈获取文件名和行号时跳过的调用深度。

AddStacktrace(lvl zapcore.LevelEnabler): 用来指定某个日志级别及以上级别输出调用堆栈。

IncreaseLevel(lvl zapcore.LevelEnabler): 提高日志级别,如果传入的 lvl 比现有级别低,则不会改变日志级别。

WithFatalHook(hook zapcore.CheckWriteHook): 当出现 Fatal 级别日志时调用的钩子函数。

WithClock(clock zapcore.Clock): 指定日志记录器用来确定当前时间的 zapcore.Clock 对象,默认为 time.Now 的系统时钟。

创建自定义的配置对象,除了在代码中指定配置参数,也可以将这些配置项写入到 JSON 文件中,然后通过 json.Unmarshal 的方式将配置绑定到 zap.Config,可以参考官方示例。

二次开发

封装自己的 zap 包

通过前文对 zap 的介绍,相信你对 zap 的特点和用法都已了然于心。如果你用惯了 Go log 标准库,或者是 Logrus 第三方库,那么对于 zap 所提供的 API 一定不会感到满意。因此,我基于 zap 包定制开发了自己的日志包,项目地址在这里,你可以点进去查看源码。

基于 zap 定制的日志包并没有太多的逻辑,只在 zap/zapcore (zapcore 故名思义,是 zap 的核心,zap 是对 zapcore 的封装)基础上进行了很薄的一层封装,所以性能上无需担心。

提示:关于定制开发的日志包设计思路这里就不讲解了,之后我会单独写一篇文章来进行解读,敬请期待(先挖个坑)。

日志包对外提供了类似 Go log 标准库风格的 API,几种常见使用方式如下:

像 Go log 标准库一样开箱即用

package main

import (

"os"

"time"

log "github.com/jianghushinian/gokit/log/zap"

)

func main() {

defer log.Sync()

log.Info("failed to fetch URL", log.String("url", "https://jianghushinian.cn/"))

log.Warn("Warn msg", log.Int("attempt", 3))

log.Error("Error msg", log.Duration("backoff", time.Second))

log.SetLevel(log.ErrorLevel)

log.Info("Info msg")

log.Warn("Warn msg")

log.Error("Error msg")

// 替换默认 Logger

file, _ := os.OpenFile("custom.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)

logger := log.New(file, log.InfoLevel)

log.ReplaceDefault(logger)

log.Info("Info msg in replace default logger after")

}

自定义日志包提供了默认的 std Logger 对象和 Info、Warn 等包级别的开放函数,以此实现开箱即用的效果。日志包还提供了 SetLevel 函数来支持运行时修改日志级别。

另外,如果你对默认的 Logger 不满意,可以使用 log.New 来创建新的 Logger,接下来只需要通过 log.ReplaceDefault(logger) 一行代码,就可以将默认的 Logger 替换成新创建的 Logger 对象。之后通过 log.Info 来输出日志底层使用的已经是替换后的 Logger 对象了。

执行以上代码,控制台输出:

{"level":"info","ts":"2023-03-19T21:57:59+08:00","msg":"failed to fetch URL","url":"https://jianghushinian.cn/"}

{"level":"warn","ts":"2023-03-19T21:57:59+08:00","msg":"Warn msg","attempt":3}

{"level":"error","ts":"2023-03-19T21:57:59+08:00","msg":"Error msg","backoff":1}

{"level":"error","ts":"2023-03-19T21:57:59+08:00","msg":"Error msg"}

custom.log 输出:

{"level":"info","ts":"2023-03-19T21:57:59+08:00","msg":"Info msg in replace default logger after"}

将日志输出到多个位置

package main

import (

"os"

log "github.com/jianghushinian/gokit/log/zap"

)

func main() {

file, _ := os.OpenFile("test-warn.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)

tees := []log.TeeOption{

{

Out: os.Stdout,

LevelEnablerFunc: func(level log.Level) bool {

return level == log.InfoLevel

},

},

{

Out: file,

LevelEnablerFunc: func(level log.Level) bool {

return level == log.WarnLevel

},

},

}

logger := log.NewTee(tees)

defer logger.Sync()

logger.Info("Info tee msg")

logger.Warn("Warn tee msg")

logger.Error("Error tee msg") // 不会输出

}

自定义日志包通过 log.NewTee 构造函数提供了将日志输出到多个位置的能力,log.NewTee 接收一个 log.TeeOption 列表,用来定义不同级别的日志输出方式,其本质上是定义了多个 zap.Core 对象。

其中 Out 字段为日志输出目标地址,LevelEnablerFunc 用来指定日志级别。这有别于使用 log.InfoLevel 这种常量日志级别的设定,使用 LevelEnablerFunc 只需要定义一个接收 log.Level 作为参数并返回 bool 类型值的函数即可。

这样如果函数内部写为 return level == log.InfoLevel 表示 Info 级别使用此配置日志对象输出,日过函数内部实现为 return level >= log.WarnLevel 则表示 Warn 及以上级别即 Warn、Error、DPanic、Panic、Fatal 级别都使用此配置对应的日志对象作为输出,更为灵活。

执行以上代码,控制台输出:

{"level":"info","ts":"2023-03-19T22:06:25+08:00","msg":"Info tee msg"}

test-warn.log 输出:

{"level":"warn","ts":"2023-03-19T22:06:25+08:00","msg":"Warn tee msg"}

选项模式、Hooks、日志轮转等更多使用场景可以参考项目的使用示例。在 Gin 框架中的使用示例,可以参考这里。

总结

本文讲解了 Go 第三方日志库 zap 的特点及使用。

zap 作为以快著称的日志库,在使用上不如 Logrus 来的方便,于是我基于 zap 定制开发了自己的日志包,并简单介绍了如何使用。

关于 zap 的更多使用方式可以参考官方文档,如果你对我封装日志包感兴趣,可以查看源码。

参考

zap 源码: github.com/uber-go/zap

zap 文档: pkg.go.dev/go.uber.org…

基于 zap 开发的日志包: github.com/jianghushin…

江湖十年

野生程序员|Go|Python

55

文章

41k

阅读

63

粉丝 目录 收起

特点

使用

基本使用

给语法加点糖

定制 Logger

二次开发

封装自己的 zap 包

像 Go log 标准库一样开箱即用

将日志输出到多个位置

总结

友情链接:

sqlstate08006

python flask return

渗透测试工具ZAP入门教程(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客

>

渗透测试工具ZAP入门教程(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客

渗透测试工具ZAP入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

Python_chichi

已于 2023-12-13 08:38:24 修改

阅读量2.7k

收藏

12

点赞数

分类专栏:

互联网

职业发展

程序员

文章标签:

测试工具

于 2023-09-06 11:45:57 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Javachichi/article/details/132712240

版权

互联网

同时被 3 个专栏收录

274 篇文章

19 订阅

订阅专栏

程序员

263 篇文章

26 订阅

订阅专栏

职业发展

156 篇文章

16 订阅

订阅专栏

介绍 ZAP

Zed Attack Proxy(ZAP)是一个免费的开源渗透测试工具,在 软件安全项目 (SSP)。ZAP 专为测试 Web 应用程序而设计,既灵活又可扩展。

ZAP的核心是所谓的“中间人代理”。它位于测试人员的浏览器和Web应用程序之间,以便它可以拦截和检查浏览器和Web应用程序之间发送的消息,根据需要修改内容,然后将这些数据包转发到目的地。它可以用作独立应用程序和守护进程。

如果已在使用另一个网络代理(如在许多企业环境中),则可以将 ZAP 配置为连接到该代理。

ZAP 为各种技能水平提供功能,从开发人员到刚接触安全测试的测试人员,再到安全测试专家。ZAP 具有每个主要操作系统和 Docker 的版本,因此您不必绑定到单个操作系统。 其他功能可从 ZAP 市场中的各种附加组件免费获得,可从 ZAP 客户端中访问。

由于 ZAP 是开源的,因此可以检查源代码以准确了解功能是如何实现的。任何人都可以自愿从事 ZAP 工作、修复错误、添加功能、创建拉取请求以将修复程序拉入项目,以及编写附加组件以支持特殊情况。

安装和配置 ZAP

ZAP 有适用于 Windows、Linux 和 macOS 的安装程序。下面列出的下载站点上还提供了 Docker 映像。

安装 ZAP

首先要做的是在要对其执行渗透测试的系统上安装 ZAP。从下载页面下载相应的安装程序。

请注意,ZAP 需要 Java 11+ 才能运行。macOS 安装程序包含相应版本的 Java,但您必须为 Windows、Linux 和跨平台版本单独安装 Java 11+。Docker 版本不需要您安装 Java。

windows 版JDK使用exe安装后即可。

windows安装ZAP,直接双击exe文件安装即可。

持久化会话

首次启动 ZAP 时,系统将询问您是否要保留 ZAP 会话。默认情况下,ZAP 会话始终记录到具有默认名称和位置的 HSQLDB 数据库中的磁盘。如果不保留会话,则在退出 ZAP 时将删除这些文件。

如果选择保留会话,则会话信息将保存在本地数据库中,以便以后可以访问它,并且您将能够提供用于保存文件的自定义名称和位置。

现在,选择“否,我不想在此时保留此会话”,然后单击“开始”。ZAP 会话暂时不会持久化。

ZAP 桌面用户界面

ZAP 桌面 UI 由以下元素组成:

菜单栏 – 提供对许多自动和手动工具的访问。工具栏 – 包括可轻松访问最常用功能的按钮。树窗口 – 显示站点树和脚本树。工作区窗口 – 显示请求、响应和脚本,并允许您对其进行编辑。信息窗口 – 显示自动和手动工具的详细信息。页脚 – 显示找到的警报的摘要以及主要自动化工具的状态。

使用 ZAP 时,可以单击菜单栏上的“帮助”或按 F1 访问《ZAP 桌面用户指南》中的上下文相关帮助。它也可以在线获得。

有关 UI 的详细信息,请参阅 ZAP 联机文档中的 ZAP UI 概述。

重要说明:您应该只使用 ZAP 攻击您有权测试的应用程序,并进行主动攻击。由于这是一个模拟,其作用类似于真实攻击,因此可能会对站点的功能,数据等造成实际损害。如果您担心使用 ZAP,可以通过切换到安全模式来防止它造成伤害(尽管 ZAP 的功能会显着降低)。

若要将 ZAP 切换到安全模式,请单击主工具栏上模式下拉列表中的箭头以展开下拉列表并选择**“安全模式**”。

快速开始-自动扫描

开始使用 ZAP 的最简单方法是通过“快速入门”选项卡。 快速入门是安装 ZAP 时自动包含的 ZAP 加载项。

要运行快速入门自动扫描:

启动 ZAP,然后单击工作区窗口的快速启动选项卡。单击大的自动扫描按钮。在“要攻击的 URL”文本框中,输入要攻击的 Web 应用程序的完整 URL。点击攻击

勾选传统爬虫,点击攻击,ZAP会自动攻击填写的网站。

ZAP 将继续使用蜘蛛抓取 Web 应用程序,并被动扫描它找到的每个页面。然后,ZAP 将使用活动扫描程序攻击所有发现的页面、功能和参数。

2种爬虫

ZAP 提供 2 个爬虫用于爬网 Web 应用程序,您可以从此屏幕使用其中一个或两个。

传统的 ZAP 蜘蛛,通过检查来自 Web 应用程序的响应中的 HTML 来发现链接。这种蜘蛛速度很快,但在探索使用 JavaScript 生成链接的 AJAX Web 应用程序时并不总是有效的。

对于AJAX应用程序,ZAP的AJAX蜘蛛可能更有效。该蜘蛛通过调用浏览器来探索Web应用程序,然后跟踪已生成的链接。AJAX 蜘蛛比传统蜘蛛慢,需要额外的配置才能在“无头”环境中使用。

ZAP 将被动扫描通过它代理的所有请求和响应。到目前为止,ZAP 只对您的 Web 应用程序进行了被动扫描。被动扫描不会以任何方式改变响应,被认为是安全的。扫描也在后台线程中执行,以免减慢探索速度。被动扫描擅长发现一些漏洞,并作为一种了解 Web 应用程序的基本安全状态并找到可能需要进行更多调查的地方的方法。

但是,主动扫描会尝试通过使用针对所选目标的已知攻击来查找其他漏洞。主动扫描是对这些目标的真正攻击,可能会使目标面临风险,因此不要对您无权测试的目标使用主动扫描。

解释您的测试结果

当 ZAP 抓取您的 Web 应用程序时,它会构建 Web 应用程序页面以及用于呈现这些页面的资源的映射。然后,它会记录发送到每个页面的请求和响应,并在请求或响应出现潜在问题时创建警报。

查看浏览的页面

要检查浏览页面的树视图,请单击树窗口中的站点选项卡。您可以展开节点以查看访问的各个 URL。

查看警报和警报详细信息

页脚的左侧包含测试期间发现的警报计数,这些警报按风险类别细分。这些风险类别是:

警报

点击警报详情,可以看到详细信息

历史

在历史页面可以看到执行过扫描的历史记录。

spider

可以看到执行进度。

主动扫描

可以看到爬虫发出的请求。可以看到爬虫一共发出2141个请求。

生成报告

选中站点,点击生成报告,可以生成html格式的测试报告,报告包含扫描出的警报信息内容。

手动浏览应用程序

被动扫描和自动攻击功能是开始对 Web 应用程序进行漏洞评估的好方法,但它有一些限制。其中包括:

被动扫描期间无法发现受登录页保护的任何页面,因为除非已配置 ZAP 的身份验证功能,否则 ZAP 将不会处理所需的身份验证。您无法很好地控制被动扫描中的探索顺序或自动攻击中执行的攻击类型。ZAP 确实提供了许多其他选项,用于被动扫描之外的探索和攻击。

蜘蛛是探索基本站点的好方法,但它们应该与手动探索相结合,以更有效。例如,蜘蛛只会在Web应用程序的表单中输入基本的默认数据,但用户可以输入更多相关信息,这些信息反过来又可以将更多的Web应用程序暴露给ZAP中。对于需要有效电子邮件地址的注册表等内容尤其如此。蜘蛛可能会输入一个随机字符串,这将导致错误。用户将能够对该错误做出反应并提供格式正确的字符串,这可能会导致在提交和接受表单时公开更多应用程序。

被动扫描是ZAP自动对网站进行扫描,手动浏览是用户在网站进行操作,ZAP先记录下用户操作,然后基于这些操作再进行攻击,发现漏洞。手动浏览时,操作应该遍历每一个页面。

手动浏览

要手动探索您的应用程序,请执行以下操作:

启动 ZAP,然后单击工作区窗口的快速启动选项卡。单击大的手动探索按钮。在“要浏览的 URL”文本框中,输入要浏览的 Web 应用程序的完整 URL。选择您要使用的浏览器单击启动浏览器

ZAP会启动浏览器,显示如图。

如果要将任何浏览器与现有配置文件一起使用,例如安装其他浏览器加载项,则需要手动将浏览器配置为通过 ZAP 代理,并导入并信任 ZAP 根 CA 证书。有关更多详细信息,请参阅 ZAP 桌面用户指南。

默认情况下,将启用 ZAP 平视显示器 (HUD)。在启动浏览器之前取消选中此屏幕上的相关选项将禁用HUD。

题外话

=========

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

2023届全国高校毕业生预计达到1158万人,就业形势严峻; 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。 一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

优惠劵

Python_chichi

关注

关注

0

点赞

12

收藏

觉得还不错?

一键收藏

知道了

0

评论

渗透测试工具ZAP入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

Zed Attack Proxy(ZAP)是一个免费的开源渗透测试工具,在 软件安全项目 (SSP)。ZAP 专为测试 Web 应用程序而设计,既灵活又可扩展。ZAP的核心是所谓的“中间人代理”。它位于测试人员的浏览器和Web应用程序之间,以便它可以拦截和检查浏览器和Web应用程序之间发送的消息,根据需要修改内容,然后将这些数据包转发到目的地。它可以用作独立应用程序和守护进程。如果已在使用另一个网络代理(如在许多企业环境中),则可以将 ZAP 配置为连接到该代理。

复制链接

扫一扫

专栏目录

参与评论

您还未登录,请先

登录

后发表或查看评论

OWASP ZAP渗透测试

gaogsf的博客

06-14

225

OWASP ZAP

Web漏扫工具OWASP ZAP安装与使用(非常详细)从零基础入门到精通,看完这一篇就够了。

喜欢Python编程的程序员柚柚呀

01-26

439

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。ZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。ZAP是一个中间人代理,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。

使用ZAP寻找敏感文件和目录

2301_78117835的博客

10-26

81

代理是一个应用程序,充当客户端和服务器之间的中介,或者为一个服务器组提供不同的服务。客户端从代理请求服务,代理能够将请求转发到适当的服务器并获取来自客户端的回复。当我们将浏览器使用ZAP作为代理时,并且ZAP正在监听时,它不会直接发送请求到我们想要浏览网页的服务器,而是发送到我们定义的地址。然后ZAP将请求转发给服务器,但我们发送的是没有注册和分析过的信息。ZAP的强制浏览与DirBuster的工作方式相同;我们需要配置相应的字典,并向服务器发送请求,就像它试图浏览列表中的文件一样。

渗透测试工具ZAP入门教程(3)-渗透测试扫描流程

seanyang_的博客

08-27

534

使用 ZAP 的 Spider 功能进行扫描时,默认情况下会扫描当前页并自动探测整个网站,并构建一个全面的页面列表。然后,ZAP 将使用这个页面列表来进行更全面的安全扫描。因此,ZAP 的 Spider 扫描将涵盖整个网站的所有页,而不仅仅是当前页。点击Active Scan Start,开始使用默认配置对前三步记录的地址进行扫描(页面操作有时候不会开始扫描,可以用方法二或三)。输入URL,点击启动浏览器,在打开的浏览器登录要扫描的网站。在ZAP界面,在需要攻击的网站上右键->攻击->主动扫描。

渗透测试工具ZAP入门教程(2)-HUD教程

seanyang_的博客

08-27

426

当蜘蛛启动时,工具会显示蜘蛛的进度。这种模式特别适用于测试大型网站的子部分-当启用时,在您探索URL时,它将仅攻击在范围内的URL,而不攻击您不使用的网站的任何部分。这些可疑字符串是不区分大小写的,目前硬编码为:TODO,FIXME,BUG,XXX,QUERY,DB,ADMIN,USER,PASSWORD,PWORD,PWD,SELECT。如果您点击"Comments"工具,图标将变为[黄色的对话气泡]或[带有感叹号的黄色对话气泡],并且相同的图标将显示在目标页面上的每个HTML注释处。

【ZAP的爬虫功能介绍及使用】

jsvdb的博客

05-28

1034

ZAP爬虫是一种基于ZAP(Zed Attack Proxy)漏洞扫描工具的爬虫,用于自动化地访问web应用程序的所有页面,并根据页面内容和链接来创建地图,以识别潜在漏洞。它可以帮助安全测试人员更好地了解web应用程序的结构和漏洞,并提供更全面和深入的漏洞扫描。ZAP爬虫同时具有功能强大的过滤器和配置选项,以便于用户控制爬行行为。ZAP爬虫功能是指ZAP代理中的一个自动化工具,它可以模拟用户在浏览器中的行为,以及在Web应用程序中进行常见的攻击。

OWASP ZAP的使用教程

热门推荐

fyj6699的博客

04-15

1万+

目录

1.配置网络代理:

2.zap被动扫描:

3.zap主动扫描:

4.标准流程(重点)

1.配置网络代理:

打开火狐浏览器:

(以下箭头依次操作)

打开zap软件:

这两个端口要配置一致。

2.zap被动扫描:

输入要测试的网址,点击启动浏览器

3.zap主动扫描:

4.标准流程(重点)

(1)打开zap,可选yes保存会话,下次就可以直接打开会话了,或者选no不保存会话,建议保存,避免二次手动爬网。

(2)身份验证,这里建议手动,其..

Web渗透_扫描工具OWASP_ZAP

分享学习网络的点点滴滴

07-18

1429

OWASP_ZAPWEBApplicaiton系统渗透测试和漏洞挖掘工具开源免费跨平台简单易用截断代理主动、被动扫描Fuzzy、暴力破解APIhttp//zap/需要浏览器开启代理。

Web安全—Web漏扫工具OWASP ZAP安装与使用

PP_zi的博客

08-27

4636

本文仅用于安全学习使用!切勿非法用途。

一、OWASP ZAP简介

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。ZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。

ZAP是一个中间人代理,浏览器与服务器的任何交互都将经过.

OWASP ZAP安全测试工具使用教程(高级)

qq_38484679的博客

07-14

5164

主要是用于安全工具使用的介绍

ZapPenTester:使用 OWASP ZAP 在 Microsoft 堆栈中启用自动渗透测试的命令行工具

06-23

ZapPenTester

使用 OWASP ZAP 在 Microsoft 堆栈中启用自动渗透测试的命令行工具

node-zap:一个用于 node.js 的小测试工具

06-01

电击:

一个用于的小测试工具

zap 的灵感来自 freenode #nodejs 频道上的一个对话,其中 ry 告诉我require('assert')是我需要的所有测试框架。 我受到启发,并根据 ry 编写的一个对此进行了建模。

zap 的作用比那个 makefile 多一点。 我想了:

每个文件的多个测试,采用的风格,

确保测试实际完成(通过test.done() ),

漂亮的输出。

例子

测试/winner.test.js

var assert = require('assert')

module.exports = {

setup: function (test) {

test.is_awesome = true

},

'test that thingy': function (test) {

assert.ok(test.is_aweso

mac-安全测试工具owasp zap下载

06-13

owasp作为一个开源免费的安全测试工具,集成了各种工具的渗透测试框架,可以用来主动扫描和手动扫描,也可以用里面的库进行渗透测试,里面的内容也实时都在更新,建议有安全测试需求的测试人员练手使用。

由于官网下载太慢,安装包就放在这了。

网管教程 从入门到精通软件篇.txt

04-25

网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...

Springboot教程(五)——单元测试

wozuishuai_的博客

03-03

936

idea中一般使用JUnit进行单元测试。

Spring MVC PathPatternMatchableHandlerMapping原理解析

最新发布

qq_32868023的博客

03-06

631

在Spring MVC框架中,路由机制是实现HTTP请求到具体处理器方法映射的核心。是Spring 5之后引入的一个新特性,它基于来提供更为灵活和强大的URL路径匹配能力。与传统的相比,提供了更丰富的路径模式匹配特性,如参数化路径、正则表达式匹配等。

什么是MVC和MVVM

Poggie的博客

03-03

477

*MVC和MVVM是两种流行的软件架构模式,它们在前端开发中被广泛采用来组织代码和管理应用程序的复杂性**。

已解决ResponseEntityException的Spring MVC异常响应实体异常的正确解决方法,亲测有效!!!

小明的Java问道之路

03-03

1092

在Spring MVC开发中,ResponseEntity是一个强大的构造器,允许我们以完全控制的方式构建HTTP响应,包括状态码、头信息和响应体内容。当我们在处理请求并返回相应响应时,可能会遇到各种问题导致异常。本文将分析这类异常发生的原因,并提供详细的解决策略。

php网站漏洞挖掘从入门到精通 下载

10-20

对于"PHP网站漏洞挖掘从入门到精通"这个问题,以下是我的简要回答:

PHP网站漏洞挖掘是指通过分析和测试PHP网站的代码和功能,发现并利用其中的漏洞。而从入门到精通的过程,可以通过以下几个步骤来进行。

首先,了解基本概念和常见漏洞类型。学习PHP语言的基础知识,包括语法、变量、函数、条件语句等。同时,了解常见的安全漏洞类型,如SQL注入、跨站脚本攻击(XSS)、文件包含漏洞等。

其次,学习漏洞挖掘的方法和工具。熟悉常用的漏洞挖掘工具,如Burp Suite、OWASP ZAP等,了解它们的功能和使用方式。同时,了解黑盒测试和白盒测试的概念,并学会使用这些技术来发现网站中的漏洞。

接着,通过实践来提升技能。可以选择一些开放的漏洞挖掘平台或漏洞挖掘竞赛,进行实际的漏洞挖掘工作。通过挖掘不同类型的漏洞,可以加深对漏洞原理和挖掘技术的理解,并提高解决问题的能力。

最后,持续学习和保持更新。由于漏洞挖掘领域的技术和趋势在不断发展,保持学习的态度是非常重要的。可以订阅安全研究机构的博客、参加相关的培训或会议,以保持对最新漏洞和攻击技术的了解。

总之,PHP网站漏洞挖掘从入门到精通需要不断学习和实践,并与其他安全专业人士进行交流和分享经验。只有不断提升自己的知识和技能,才能在这个领域中成为一名专业的漏洞挖掘者。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

Python_chichi

CSDN认证博客专家

CSDN认证企业博客

码龄3年

暂无认证

428

原创

3153

周排名

1041

总排名

121万+

访问

等级

1万+

积分

9704

粉丝

4561

获赞

567

评论

1万+

收藏

私信

关注

热门文章

网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

103357

2023最新版IntelliJ IDEA安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

88565

Dev-C++的下载和安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

52074

Visual Studio下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

51646

Visual Studio Code (VS Code)安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

42036

分类专栏

web安全

54篇

渗透测试

46篇

网络安全

64篇

互联网

274篇

程序员

263篇

爬虫

35篇

职业发展

156篇

生活

14篇

python开发

34篇

转行

21篇

科技

187篇

python入门

21篇

黑客

1篇

前端

1篇

python 数据分析

9篇

开发语言

2篇

python面试

19篇

python小白

8篇

11

1篇

22

1篇

最新评论

【2024最新版】BurpSuite安装和基础使用教程(已破解),三分钟手把手教会,非常简单!

令狐楚:

激活流程有用,谢谢老哥

Visual Studio下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

2301_79982723:

为什么我的安装位置改不了了

Mysql的安装配置教程(非常详细)从零基础入门到精通,看完这一篇就够了

ziqing1234:

那个安装包文件目录在哪里,我没找到

Vivado安装教程(非常详细),从零基础入门到精通,看完这一篇就够了

睿智の男孩:

我下的离线下载包 ,当初四个小时就下完了

Vivado安装教程(非常详细),从零基础入门到精通,看完这一篇就够了

saki牧师妹:

24年了,下载完了吗

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

网络安全真的很难找工作吗?

CTF设计的七个经验教训

程序员搞什么副业可以月入过万?

2024

03月

8篇

02月

29篇

01月

31篇

2023年259篇

2022年101篇

目录

目录

分类专栏

web安全

54篇

渗透测试

46篇

网络安全

64篇

互联网

274篇

程序员

263篇

爬虫

35篇

职业发展

156篇

生活

14篇

python开发

34篇

转行

21篇

科技

187篇

python入门

21篇

黑客

1篇

前端

1篇

python 数据分析

9篇

开发语言

2篇

python面试

19篇

python小白

8篇

11

1篇

22

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

OWASP ZAP下载、安装、使用(详解)教程_owasp zap下载缓慢-CSDN博客

>

OWASP ZAP下载、安装、使用(详解)教程_owasp zap下载缓慢-CSDN博客

OWASP ZAP下载、安装、使用(详解)教程

最新推荐文章于 2023-08-18 17:52:30 发布

子曰小玖

最新推荐文章于 2023-08-18 17:52:30 发布

阅读量2w

收藏

113

点赞数

16

分类专栏:

OWASP ZAP

原文链接:https://www.fujieace.com/kali-linux/owasp-zed-zap.html

版权

OWASP ZAP

专栏收录该内容

1 篇文章

3 订阅

订阅专栏

OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者*积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。类似的针对Web应用程序的扫描工具还有AWVS、APPSCAN等。

也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。

即可以用于安全专家、开发人员、功能测试人员,甚至是渗透测试入门人员。它也是经验丰富的测试人员用于手动安全测试的绝佳工具。

 

主要拥有以下重要功能:

本地代理主动扫描被动扫描Fuzzy暴力破解

 

一、OWASP ZAP 下载地址

github项目:https://github.com/zaproxy/zaproxy/wiki/Downloads

 

二、OWASP ZAP 安装

安装我就不多说了,它有Windows(64)安装程序、 Windows(32)安装程序、 Linux安装程序、 MacOS安装程序等。

 

Windows下载下来的是exe的,双击就可以了!

Linuxg下载下来的不是.sh就是tar.gz,这个就更加简单了。

 

唯一需要注意的是:

Windows和Linux版本需要运行Java 8或更高版本JDK,MacOS安装程序包括Java 8;

 

例如:今天一位网友在windows下载安装启动owasp-zap时,做出如下提示:

The install4j wizard could not find a Java(TM) Runtime Environment on your system. Please locate a suitable 64-bit JRE.(minimun version:1.8)

中文翻译

install4j向导无法在系统上找到Java(TM)运行时环境。 请找到合适的64位JRE。(最小版本:1.8)

 

这位网友问我:我下载了java8并安装了,但不知道为什么找不到java EXE?

我的回答是:java下载的不对,或没成功安装java;一定要下载、安装Java JDK。

果然安装JDK成功解决!

 

三、OWASP ZAP使用教程(详解)

由于Kali Linux里面也集成了OWASP ZAP工具,我就拿Kali Linux里面的OWASP ZAP来做示例吧!

 

1、更新

由于owasp zap 官方不定期的会更新zap插件和zap版本,我们可以通过手动更新的方式如下:

如果你想更新单个,你可以这样:后面如果出现【更新】的字样的话,可以选择后【update selected】更新即可!

 

Marketplace为插件市场,是选择性安装的插件。主要分为一下3类的插件:

release:为经过长期验证比较成熟的插件beta:为正在测试测试中的插件,可能会出现问题alpha:比beta更加低的测试版插件

 

建议release和beta版的都安装上,alpha版本的可选择性安装!

 

2、本地代理设置

给firefox 浏览器设置http代理(也可以是其他浏览器),owasp zap默认使用8080端口开启http代理;

如果你想修改owasp zap默认的代理,owasp zap的代理设置可在【工具】-【选项】-【本地代理】中修改:

3、简单攻击

然后我们再去火狐浏览器上随意访问任何网站,都可以截取到访问的网址,从而实现攻击。

攻击是需要有步骤的:

 

首先:手动爬行网站后,选择该站点进行owsap zap的强制浏览网站、强制浏览目录、forced browse directory(and children)。

owasp zap的强制目录浏览选择使用owasp zap自带的directory-list-1.0.txt 目录字典进行尝试爬取(你也可以自定义字典)。

以上的目的是尽量的爬行出网站的所有链接页面!

 

其次:以上工作做完以后,就可以选择该站点进行active scan(主动扫描)

 

主动扫描上面有一些相关 设置,例如:信息收集、客户商和器、服务器安全、注入等。如果你有一定基础可以去设置,不是很了解的朋友们只需要用默认的即可!

 

最后:主要就是查看扫描结果,主动扫描后,针对扫描的结果【警告】菜单栏查看每一项看是否真的存在相应的问题,主要查看高危和中危漏洞,查看漏洞存在的url以及attack 的语句即 attack后服务器返回的结果。

如果你想验证该漏洞的真实有效性,你可以选择该漏洞点进行相应安全工具再进一步的测试!

 

4、persist session结果保存

【文件】-【persist session】,该功能主要保存“扫描分析的结果”,方便下次继续分析!

 

5、扫描模式

主要有4中扫描模式:安全模式、保护模式、标准模式、攻击模式;

owasp zap默认用的是标准模式,你可以在【编辑 】- 【ZAP Mode】中选择你想要的模式。

 

6、扫描策略

有两个地方可以添加扫描策略 (1)【分析】-【扫描策略】,(2)设置按钮

 

Policy:扫描策略名称,需要填写Default Alert Threshold:告警阀值,有low、medium、high,阀值越高owasp zap扫描爆出的漏洞数就越少,阀值越高owasp zap就只爆出确认的漏洞高的。Default Attack Strength:攻击强度,有low、medium、high、insane,强度越高,扫描速度越快Apply xx Threshold to All:把告警阀xx值给所有扫描插件,点击go 生效Apply xx Strength to All:把扫描强度xx应用给所有扫描插件,点击go 生效

 

7、扫描时跳过某个插件扫描

在【扫描监控】中,点击旁边的蓝色按钮,可跳过该插件的检测!

 

8、CSRF Tokens设置

部分网站有防止csrf的token,无法正常提供token网站会重定向,可以通过owasp zap 的anti csrf tokens功能来添加该网站的token名称,告知owasp zap。

 

在【设置】-【Anti CSRF Tokens】里添加。

 

9、设置代理后,https网站证书不受信任问题

owasp zap 进行代理时,浏览器访问https的网站,owasp zap使用自己的证书与浏览器建立ssl连接,由于owasp zap证书不受信任,因此需要把owasp zap的证书手动导出(cer格式的证书),导入到浏览器中即可!

 

导出owasp zap的证书的方法【设置】-【Dynamic SSL Certificates】;

 

10、contexts/scope 站点过滤

该功能可快速的定位自己关心的站点;

 

11、session properties

owasp zap 扫描站点的所有session结果都保存在session properties 中,默认是手动通过浏览器填写账号密码来记录session;

12、http session

owasp zap 默认有如下的字段名,如果网站中有其他自定义的session名,需要自己添加进来;

 

查看http session的值;

 

13、编码解码工具

【工具】-【编码解码哈希】

 

14、爬行useragent设置

【设置】-【connection】

 

15、fuzzer模糊测试(漏洞检查工具)

直接右键需要fuzzer的http包,选择fuzzer,选中需要fuzzer的值,添加payload;

 

这里以sql注入的fuzzer为例,选择一个参数值,点击add,选择fuzzer的类型;

再查看fuzzer的测试结果;

 

 

16、代理截断

owasp zap默认使用8080代理,截断默认关闭,要启动阶段需要点击。

owasp zap截断功能响应太慢,没burpsuit的好用!

 

注意:

kali linux新版本的OWASP_ZAP如果你不是很了解的话,或许你的“站点”这里并不能显示你浏览过的网站。OWASP_ZAP设置代理后,“站点”这里显示不出任何网站解决方法如下:

 

第一步:启动Manual Explore(手动浏览)

 

第二步:启动浏览器,选择“Firefox”;毕竟Kali Linux自带的只有Firefox浏览器;

 

第三步:再通过启动的这个Firefox浏览器再去访问网站,“站点”这里就会显示出来了。

优惠劵

子曰小玖

关注

关注

16

点赞

113

收藏

觉得还不错?

一键收藏

知道了

11

评论

OWASP ZAP下载、安装、使用(详解)教程

OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者*积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。类似的针对Web应用程序的扫描工具还有AWVS、APPSCAN等。也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。即可以用于安全专家、开发人员、功能测试人员,甚...

复制链接

扫一扫

专栏目录

安全测试工具-OWASP ZAP使用

07-30

在我们日常的测试工作中,我们可以使用zap来协助我们做web安全测试,只需简单的几个步骤即可完成自动化的web安全测试.

Web漏扫工具OWASP ZAP安装与使用(非常详细)从零基础入门到精通,看完这一篇就够了。

liuhyusb的博客

01-04

535

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。ZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。ZAP是一个中间人代理,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。

11 条评论

您还未登录,请先

登录

后发表或查看评论

网络安全——OWASP ZAP的使用

weixin_54055099的博客

08-20

1589

OWASP ZAP的使用

OWASP ZAP的使用教程

热门推荐

fyj6699的博客

04-15

1万+

目录

1.配置网络代理:

2.zap被动扫描:

3.zap主动扫描:

4.标准流程(重点)

1.配置网络代理:

打开火狐浏览器:

(以下箭头依次操作)

打开zap软件:

这两个端口要配置一致。

2.zap被动扫描:

输入要测试的网址,点击启动浏览器

3.zap主动扫描:

4.标准流程(重点)

(1)打开zap,可选yes保存会话,下次就可以直接打开会话了,或者选no不保存会话,建议保存,避免二次手动爬网。

(2)身份验证,这里建议手动,其..

分享8个强大的黑帽子自学网站(附:最常用的9种工具)

永恒之蓝的博客

01-19

7688

如果你英语不错,那请不要走开(进入外网可能加载会较慢)

用谷歌哦

话不多说:

1. SecurityTube

SecurityTube的所有视频都是引用自YouTube,上面的视频种类十分丰富,从攻防安全基础到编写测试,再到攻击等方面,这些视频都是由行业专业人士或者是经验丰富的安全研究人员编写的。该网站还提供一个名为SISE的IOS安全认证。

网站最主要的三大功能如下:

安全培训

渗透测试教程

项...

ZAP_2_10_Linux_Package安装文件.zip

05-27

Zed攻击代理(ZAP)是一个免费的开源渗透测试工具,由开放Web应用程序安全项目(OWASP)维护。ZAP专为测试Web应用程序而设计,并且既灵活又可扩展。

ZAP的核心是所谓的“中间人代理”。它位于测试人员的浏览器和Web应用程序之间,以便它可以拦截和检查在浏览器和Web应用程序之间发送的消息,根据需要修改内容,然后将这些数据包转发到目标位置。它可以用作独立应用程序,也可以用作守护进程。

安装包仅适应Linux系统

漏洞扫描工具OWASP ZAP的下载、安装、使用教程

qq_37776764的博客

04-26

5419

漏洞扫描工具OWASP ZAP的下载、安装、使用教程(超详细)

漏洞扫描工具OWASP ZAP的下载、安装、使用教程(KOS)

KeyarchOS的博客

08-18

1129

OWASP Zed Attack Proxy(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。即可以用于安全专家、开发人员、功能测试人员,甚至是渗透测试入门人员。它也是经验丰富的测试人员用于手动安全测试的绝佳工具。更多详细信息见ZAP官网https://www.zaproxy.org/。

The install4j wizard could not find a java(TM) runtime Environment on your system.

信徒博客

01-24

1万+

报错背景:

我在exe4j官网上面下载了程序,刚运行,就出现这个错误!

但是我的电脑里面明明安装了java啊!

报错截图如下:

 

错误原因:

仔细看报错的信息

其一、需要配置一个环境变量   EXE4J_JAVA_HOME

其二、它说最低版本是jdk 1.8,最高版本11;

           而我的却是1.7,所以找不到!

注意报错的信息!

解决方案:

...

渗透测试Web扫描器——OWASP_ZAP

hackzkaq的博客

10-14

3448

配套练手靶场,全套安全课程及工具 ,搜索公众号:白帽子左一

OWASP ZAP

一、简介

OWASP ZAP 攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。

另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。

二、优缺点

1.优点

免费的web application 扫描器

更加集成性,更加完整,功能更加完善,用途更加广泛,平台稳定性也更加好的web扫描器

2.缺点

现阶段ZAP的中

jenkins集成OWASP ZAP,解决插件使用问题,无法保存配置问题。

01-26

jenkins集成OWASP ZAP,解决插件使用问题,无法保存配置问题。把zap.jar复制到jenkins插件zap文件夹下web-inf的lib中,覆盖原有zap.jar.

OWASP ZAP 2.9.0 windows 安装程序

05-28

OWASP ZAP 2.9.0 windows 安装程序,OWASP ZAP是一款易于使用的WEB***测试工具,全名叫做OWASP Zed Attack Proxy。具有代理截包、重放、爬虫、主动扫描、被动扫描、登录扫描测试、模糊测试、生成CSRF测试列表、目录浏览、编码/解码等相关的功能。

ZAP2.10_Windows_x64安装文件

05-27

Zed攻击代理(ZAP)是一个免费的开源渗透测试工具,由开放Web应用程序安全项目(OWASP)维护。ZAP专为测试Web应用程序而设计,并且既灵活又可扩展。

ZAP的核心是所谓的“中间人代理”。它位于测试人员的浏览器和Web应用程序之间,以便它可以拦截和检查在浏览器和Web应用程序之间发送的消息,根据需要修改内容,然后将这些数据包转发到目标位置。它可以用作独立应用程序,也可以用作守护进程。

安装包仅适用Windows 64位系统。

OWASP ZAP.zip

08-15

OWASP ZAP,web安全扫描器,

owasp-dashboard:使用OWASP Zap扫描您的网址

03-14

OWASP Zap扫描

网址

严重程度

姓名

网址

严重程度

姓名

毕业设计-基于SpringBoot的智慧校园之学生家长系统-设计与实现(源码+演示视频).zip

最新发布

03-04

毕业设计-基于SpringBoot的智慧校园之学生家长系统-设计与实现

【项目技术】

开发语言:Java

框架:springboot

架构:B/S

数据库:mysql

MMX_Setup_15_0_44_2474.zip

03-04

MMX_Setup_15_0_44_2474

MMX_Setup_15_0_29_2398.zip

03-04

MMX_Setup_15_0_29_2398

OWASP ZAP下载安装

07-27

您可以通过以下步骤下载和安装OWASP ZAP:

1. 首先,您需要访问OWASP官方网站,该网站提供了OWASP ZAP的下载链接。您可以在OWASP网站的下载页面找到最新版本的OWASP ZAP。

2. 在下载页面上,您可以选择适合您操作系统的版本进行下载。OWASP ZAP是一个跨平台的工具,支持Windows、Linux和Mac OS。

3. 下载完成后,根据您的操作系统,执行相应的安装步骤。对于Windows用户,您可以双击下载的安装程序并按照提示进行安装。对于Linux用户,您可以使用命令行或包管理器进行安装。

4. 如果您是Linux用户,您可以使用以下命令将OWASP ZAP的软件源添加到您的系统中:

```

sh -c "echo 'deb http://download.opensuse.org/repositories/home:/cabelo/xUbuntu_19.04/ /' > /etc/apt/sources.list.d/home:cabelo.list"

```

这将添加一个软件源,使您可以使用包管理器来安装OWASP ZAP。

5. 安装完成后,您可以在系统中找到OWASP ZAP的启动图标或使用命令行启动它。

请注意,以上步骤仅提供了一般的下载和安装指南。具体的步骤可能会因您的操作系统和版本而有所不同。建议您在下载和安装OWASP ZAP之前,查阅官方文档或相关资源,以获取更详细的指导和最新的信息。

#### 引用[.reference_title]

- *1* [漏洞扫描工具OWASP ZAP的下载、安装、使用教程](https://blog.csdn.net/qq_37776764/article/details/130376552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

- *2* [OWASP ZAP安装kali](https://blog.csdn.net/weixin_61060664/article/details/129695333)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

[ .reference_list ]

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

子曰小玖

CSDN认证博客专家

CSDN认证企业博客

码龄15年

暂无认证

179

原创

1万+

周排名

203万+

总排名

342万+

访问

等级

2万+

积分

1867

粉丝

2450

获赞

535

评论

1万+

收藏

私信

关注

热门文章

MinGW安装教程

130521

Binwalk工具的详细使用说明

94662

详解如何用AD 生成Gerber文件

52471

hackbar 的简单使用

47264

Altium Designer|AD如何显示或隐藏飞线

45433

分类专栏

硬件原理

4篇

GOOGLE

2篇

压缩

2篇

蓝牙

14篇

KALI

3篇

J-LINK

5篇

OllyDbg

9篇

SEGGER

2篇

UEFI

2篇

GDB

2篇

Flawfinder

1篇

Firmadyne

1篇

Location

UAC

1篇

指纹识别

10篇

USB-Armory

3篇

mimikatz

7篇

Ophcrack

1篇

Yersinia

Curl

1篇

HackTheBox

PoisonTap

Responder 

3篇

Armitage

1篇

GNS3

1篇

虚拟机镜像

2篇

sasquatch

1篇

挖洞

1篇

SQL注入

2篇

OWASP ZAP

1篇

PHP代码审计

3篇

CMS

1篇

URL

1篇

SQLi Lab

1篇

CDN

WPScan

1篇

Hack RF

2篇

蜜罐

Apple

1篇

Busybox

1篇

Binary

1篇

MinGW

1篇

LINUX

128篇

C/C++

20篇

USB

28篇

STM32

24篇

Git

6篇

ARM嵌入式

19篇

Altium Designer

94篇

LINUX设备驱动

19篇

THreadX

2篇

EMMC/SD/RAM

22篇

网口

3篇

每天转一个linux命令

72篇

正则表达式

1篇

ECLIPSE

21篇

802.11

1篇

文件系统

18篇

NAND FLASH

5篇

逆向工程汇编

13篇

WIN32汇编

5篇

SMAIL

1篇

WINDOWS

58篇

Linux 命令详解

17篇

射频识别技术漫谈

33篇

CAM350

2篇

SPICE

3篇

存储模型

5篇

TCP/IP

7篇

SVN

2篇

漏洞

32篇

Pentest BOX

PYTHON

8篇

GCC

1篇

Vivado

2篇

Petalinux

2篇

VIM

8篇

MIPS

5篇

ZYNQ

4篇

OPENOCD

5篇

VisualSVN

1篇

SI 9000

4篇

NETCAT

1篇

路由器

29篇

BINWALK

2篇

反调试技术

2篇

手机开发

20篇

批处理脚本

WinDbg

8篇

Shell

1篇

Wireshark

3篇

OpenWRT

8篇

BOA

1篇

HTTP

3篇

IDA

6篇

Firmware Modification Kit

Firmware Mod Kit

1篇

Raspberry Pi

7篇

Ghidra

1篇

Windows 10 IoT Core

3篇

Network Security Tools

4篇

VNC Server

VNC

1篇

ZOOMEYE

SHODAN

1篇

OpenSSL

12篇

Nmap

6篇

Docker

1篇

WEB

QEMU

16篇

GNU

2篇

Metasploit

12篇

VMware

7篇

Burp Suite

16篇

Confluence

渗透

5篇

Ghostscript

6篇

人工智能

1篇

PWN

15篇

CTF

2篇

SQLMAP

10篇

打印机

1篇

Pwnable.kr

38篇

QT

2篇

ADB&FASTBOOT

3篇

Windows驱动开发

14篇

Cheat Engine

1篇

BAT

Nix

4篇

BAP

JPEG

5篇

SearchSploit

1篇

hydra

1篇

HTTrack

1篇

MySQL

7篇

Hackbar

1篇

Crunch

1篇

Masscan

2篇

Nessus

2篇

Meterpreter

3篇

OpenVAS

1篇

Autopsy

取证

6篇

Android

5篇

FUZZ

9篇

最新评论

Altium Designer15 导出CAD图纸,比例1:1

sinat_41922859:

尺寸不对,崩溃

Linux pwn入门教程(7)——PIE与bypass思路

起风了57:

图片锁着了怎么看

STM32 IO口模拟串口通讯

heart_6662:

请问有完整代码嘛?想学习一下

Eclipse - Eclipse gcc-none-arm 编译出现undefined reference to `_sbrk'

zjq985062714:

这个说法是错的或者已经过时了,在link时加入option "-specs=nosys.specs"就可以解决这个问题。

python3.7解决ModuleNotFoundError: No module named '_bz2'

WFKMSX:

没试你发出来干什么

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

AltiumDesigner中PCB无法选中元器件的解决方案

Altium Designer编辑PCB时,器件跑出可视界面外的解决方法

Altium designer自动布线设置GND或其他网络不布线的方法

2023年5篇

2022年60篇

2021年64篇

2020年190篇

2019年426篇

2018年222篇

2017年165篇

目录

目录

分类专栏

硬件原理

4篇

GOOGLE

2篇

压缩

2篇

蓝牙

14篇

KALI

3篇

J-LINK

5篇

OllyDbg

9篇

SEGGER

2篇

UEFI

2篇

GDB

2篇

Flawfinder

1篇

Firmadyne

1篇

Location

UAC

1篇

指纹识别

10篇

USB-Armory

3篇

mimikatz

7篇

Ophcrack

1篇

Yersinia

Curl

1篇

HackTheBox

PoisonTap

Responder 

3篇

Armitage

1篇

GNS3

1篇

虚拟机镜像

2篇

sasquatch

1篇

挖洞

1篇

SQL注入

2篇

OWASP ZAP

1篇

PHP代码审计

3篇

CMS

1篇

URL

1篇

SQLi Lab

1篇

CDN

WPScan

1篇

Hack RF

2篇

蜜罐

Apple

1篇

Busybox

1篇

Binary

1篇

MinGW

1篇

LINUX

128篇

C/C++

20篇

USB

28篇

STM32

24篇

Git

6篇

ARM嵌入式

19篇

Altium Designer

94篇

LINUX设备驱动

19篇

THreadX

2篇

EMMC/SD/RAM

22篇

网口

3篇

每天转一个linux命令

72篇

正则表达式

1篇

ECLIPSE

21篇

802.11

1篇

文件系统

18篇

NAND FLASH

5篇

逆向工程汇编

13篇

WIN32汇编

5篇

SMAIL

1篇

WINDOWS

58篇

Linux 命令详解

17篇

射频识别技术漫谈

33篇

CAM350

2篇

SPICE

3篇

存储模型

5篇

TCP/IP

7篇

SVN

2篇

漏洞

32篇

Pentest BOX

PYTHON

8篇

GCC

1篇

Vivado

2篇

Petalinux

2篇

VIM

8篇

MIPS

5篇

ZYNQ

4篇

OPENOCD

5篇

VisualSVN

1篇

SI 9000

4篇

NETCAT

1篇

路由器

29篇

BINWALK

2篇

反调试技术

2篇

手机开发

20篇

批处理脚本

WinDbg

8篇

Shell

1篇

Wireshark

3篇

OpenWRT

8篇

BOA

1篇

HTTP

3篇

IDA

6篇

Firmware Modification Kit

Firmware Mod Kit

1篇

Raspberry Pi

7篇

Ghidra

1篇

Windows 10 IoT Core

3篇

Network Security Tools

4篇

VNC Server

VNC

1篇

ZOOMEYE

SHODAN

1篇

OpenSSL

12篇

Nmap

6篇

Docker

1篇

WEB

QEMU

16篇

GNU

2篇

Metasploit

12篇

VMware

7篇

Burp Suite

16篇

Confluence

渗透

5篇

Ghostscript

6篇

人工智能

1篇

PWN

15篇

CTF

2篇

SQLMAP

10篇

打印机

1篇

Pwnable.kr

38篇

QT

2篇

ADB&FASTBOOT

3篇

Windows驱动开发

14篇

Cheat Engine

1篇

BAT

Nix

4篇

BAP

JPEG

5篇

SearchSploit

1篇

hydra

1篇

HTTrack

1篇

MySQL

7篇

Hackbar

1篇

Crunch

1篇

Masscan

2篇

Nessus

2篇

Meterpreter

3篇

OpenVAS

1篇

Autopsy

取证

6篇

Android

5篇

FUZZ

9篇

目录

评论 11

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

漏洞扫描工具OWASP ZAP的下载、安装、使用教程_owasp zap下载-CSDN博客

>

漏洞扫描工具OWASP ZAP的下载、安装、使用教程_owasp zap下载-CSDN博客

漏洞扫描工具OWASP ZAP的下载、安装、使用教程

网络安全刚子

已于 2023-05-16 00:05:56 修改

阅读量5.4k

收藏

20

点赞数

3

文章标签:

linux

网络安全

网络

web安全

于 2023-04-26 00:32:32 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_37776764/article/details/130376552

版权

最新需要用到owasp工具进行漏洞扫描,发现安装的kali虚拟机没有自动安装owasp,由于内网环境,也无法联网下载,网上找的操作步骤也良莠不齐,无法操作,索性自己总结一下。

owasp介绍

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。ZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。 ZAP是一个中间人代理,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。

一、owasp下载

安装包下载地址:https://www.zaproxy.org/download/

github地址:https://github.com/zaproxy/zaproxy/wiki/Downloads

可以下载win、linux版本

二、owasp安装

1、 windows安装

windowns的安装包下载下来后,是exe的可执行程序,点击安装即可。

安装完成桌面图标如下:

 

 

报错解决

1、报错问题:提示缺少java runtime Environment 11.0,但是查看jdk版本发现,已经安装的就是jdk11 

2、解决:在安装目录中双击运行  zap.bat

 3、等运行完毕,直接打开

 

2、 linux安装

linux 包下载下来后是ZAP_2.12.0_unix.sh,

直接拖入或者拷贝到linux服务器指定目录下如/usr目录下,无需解压,在Linux系统下运行.sh文件有需要给它权限,使用命令

chmod u+x ZAP_2.12.0_unix.sh

进入/usr 目录下,可以看到有zap.sh脚本;

执行脚本即可启动。命令如下,自动开始运行,弹出安装框,安装过程和win一样。

./ZAP_2_12_0_unix.sh

 安装完成,在04-web程序中最后会显示ZAP。

如果linux下没有安装桌面模式,可以执行sh zap.sh -cmd,采用cmd模式启动zap。

默认启动8080端口。

sh zap.sh -cmd -h 查看帮助文档。

三、owasp使用

首页面展示

 1、自动扫描

输入要攻击的完整URL,可以选择勾选spider,ZAP提供spider进行Web的页面扫描,发现所有的页面。对于AJAX应用程序,可使用AJAX spider。点击“攻击”开始扫描。

 2、点击攻击后,ZAP便开始爬取Web应用程序,展示扫描的进度与每个页面的请求和响应:

 3、有进度条可以显示扫描进度,扫描完成后,可在“警报”TAB中查看潜在安全漏洞与详情:

优惠劵

网络安全刚子

关注

关注

3

点赞

20

收藏

觉得还不错?

一键收藏

知道了

0

评论

漏洞扫描工具OWASP ZAP的下载、安装、使用教程

漏洞扫描工具OWASP ZAP的下载、安装、使用教程(超详细)

复制链接

扫一扫

(转)OWASP ZAP下载、安装、使用(详解)教程

diliu5480的博客

02-11

4985

OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者*积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。

也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。

即可以用于安全专家、开发人员、功能测试人员,甚至是渗透测试入门人员。它也是经...

漏洞扫描工具OWASP ZAP 2.13.0下载

12-22

ZAP是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。

ZAP主要覆盖了安全性测试里渗透测试即对系统进行模拟攻击和分析来确定其安全性漏洞。ZAP能够以代理的形式来实现渗透性测试,它将自己和浏览器之间设置一个中间人的角色,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。

同时,ZAP适用于所有的操作系统和Docker的版本,而且简单易用,还拥有强大的社区,能够在互联网上找到多种额外的功能插件。

参与评论

您还未登录,请先

登录

后发表或查看评论

Web漏扫工具OWASP ZAP安装与使用(非常详细)从零基础入门到精通,看完这一篇就够了。

最新发布

喜欢Python编程的程序员柚柚呀

01-26

439

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。ZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。ZAP是一个中间人代理,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。

渗透测试专家必备工具OWASP

wzj的博客

05-31

4822

OWASP,全称是:Open Web Application Security Project,翻译为中文就是:开放式Web应用程序安全项目,是一个非营利组织,不附属于任何企业或财团,这也是该组织可以不受商业控制地进行安全开发及安全普及的重要原因。它应用于web扫描和攻击的安全工具,同时也是开源的,在截断代理以及扫描攻击上是比较强大的。

OWASP扫描漏洞范围:

1—注入

2—失效的身份认证会话管理

3—跨站脚本、XSS

4—不安全的直接对象引用

5—安全配置错误

6—敏感信息泄漏

7—功能级访问控制缺失

OWASP ZAP下载、安装、使用(详解)教程

热门推荐

子曰小玖的博客

02-22

2万+

OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者*积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。类似的针对Web应用程序的扫描工具还有AWVS、APPSCAN等。

也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。

即可以用于安全专家、开发人员、功能测试人员,甚...

漏洞扫描工具OWASP ZAP的下载、安装、使用教程(KOS)

KeyarchOS的博客

08-18

1129

OWASP Zed Attack Proxy(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。也可以说:ZAP是一个中间人代理。它允许您查看您对Web应用程序发出的所有请求以及您从中收到的所有响应。即可以用于安全专家、开发人员、功能测试人员,甚至是渗透测试入门人员。它也是经验丰富的测试人员用于手动安全测试的绝佳工具。更多详细信息见ZAP官网https://www.zaproxy.org/。

安全测试工具OWASP ZAP下载

m0_57098592的博客

06-13

1739

安全测试工具owasp zap下载安装

【安全测试zap扫描】OWASP ZAP安全扫描

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。

10-12

2475

本文主要记录在OWASP ZAP安装及使用过程中的步骤及遇到的问题。OWASP ZAP安全扫描工具使用较为方便,主要可以用于渗透性测试,类似用抓包工具,在浏览器和服务器之间,可以对信息进行分析和扫描。linux 包下载下来后是ZAP_2.11.1_Linux.tar.gz,拷贝到linux服务器指定目录下,解压后,进入zap_2.11.1文件夹,可以看到有zap.sh脚本;直接修改zap.sh同级目录中的xml文件夹中的config.xml,将replacer的配置手动写入到config.xml中;具体的内

app安全测试-OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装

qq_42610167的博客

08-12

1928

概览

本文意在对于OWASP’s Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍。

ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用。

为了达到这一目的,本文会包含一些安全测试概念和术语,但是本文并不会就ZAP或安全测试进行过于深入的讨论。

安全测试基础

软件系统安全性测试,是一个评估和测试系统,以发现系统和数据安全性风险和漏洞的过程。

安全性测试并没有统一的方法论,不过我们将这一过程描述为“不以滥用为目的的发现系统的漏洞的行为”。

常见的安全性测试类型

owasp-zap windows

01-13

漏洞扫描 爆破

OWASP ZAP.zip

08-15

OWASP ZAP,web安全扫描器,

Owasp Zap Live CD:Owasp Zap Live CD-开源

07-08

Live CD、Live DVD 或 Live Disc 是完整的可引导计算机安装,包括在计算机内存中运行的操作系统。此 Live CD 包含 Owasp Zap 漏洞测试解决方案,OWASP Zed Attack Proxy (ZAP) 是世界上最受欢迎的免费安全工具,由数百名国际志愿者积极维护*。 它可以帮助您在开发和测试应用程序时自动查找 Web 应用程序中的安全漏洞。 它也是经验丰富的渗透测试人员用于手动安全测试的绝佳工具。

ZAP:OWASP ZAP 核心项目-开源

07-07

OWASP Zed Attack Proxy (ZAP) 是世界上最受欢迎的免费安全工具之一,由专门的国际志愿者团队积极维护。 它可以帮助您在开发和测试应用程序时自动查找 Web 应用程序中的安全漏洞。 它也是经验丰富的渗透测试人员用于手动安全测试的绝佳工具。 ZAP 是一种易于使用的集成渗透测试工具,用于查找 Web 应用程序中的漏洞。 它旨在供具有广泛安全经验的人使用,因此非常适合不熟悉渗透测试的开发人员和功能测试人员。 ZAP 提供自动扫描程序以及一组工具,可让您手动查找安全漏洞。 它位于测试者的浏览器和 Web 应用程序之间,以便它可以拦截和检查浏览器和 Web 应用程序之间发送的消息。

OWASP ZAP 安全扫描工具

06-26

OWASP ZAP 工具箱 综合漏洞利用

OWASP(web渗透测试软件)

09-24

OWASP ZAP_2_7_0_windows_64(web渗透测试软件)安装包以及操作

ZAP-2-13-0-unix.sh

09-18

ZAP_2_13_0_unix.sh适用于Linux 安装程序

OWASP ZAP 2.7.0 版本

09-27

OWASP Zed Attack Proxy (ZAP)工具是世界上最受欢迎的免费安全工具之一。ZAP可以帮助安全测试人员在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试...

OWASP ZAP下载安装

07-27

您可以通过以下步骤下载和安装OWASP ZAP:

1. 首先,您需要访问OWASP官方网站,该网站提供了OWASP ZAP的下载链接。您可以在OWASP网站的下载页面找到最新版本的OWASP ZAP。

2. 在下载页面上,您可以选择适合您操作系统的版本进行下载。OWASP ZAP是一个跨平台的工具,支持Windows、Linux和Mac OS。

3. 下载完成后,根据您的操作系统,执行相应的安装步骤。对于Windows用户,您可以双击下载的安装程序并按照提示进行安装。对于Linux用户,您可以使用命令行或包管理器进行安装。

4. 如果您是Linux用户,您可以使用以下命令将OWASP ZAP的软件源添加到您的系统中:

```

sh -c "echo 'deb http://download.opensuse.org/repositories/home:/cabelo/xUbuntu_19.04/ /' > /etc/apt/sources.list.d/home:cabelo.list"

```

这将添加一个软件源,使您可以使用包管理器来安装OWASP ZAP。

5. 安装完成后,您可以在系统中找到OWASP ZAP的启动图标或使用命令行启动它。

请注意,以上步骤仅提供了一般的下载和安装指南。具体的步骤可能会因您的操作系统和版本而有所不同。建议您在下载和安装OWASP ZAP之前,查阅官方文档或相关资源,以获取更详细的指导和最新的信息。

#### 引用[.reference_title]

- *1* [漏洞扫描工具OWASP ZAP的下载、安装、使用教程](https://blog.csdn.net/qq_37776764/article/details/130376552)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

- *2* [OWASP ZAP安装kali](https://blog.csdn.net/weixin_61060664/article/details/129695333)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

[ .reference_list ]

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

网络安全刚子

CSDN认证博客专家

CSDN认证企业博客

码龄7年

暂无认证

19

原创

127万+

周排名

23万+

总排名

5万+

访问

等级

277

积分

17

粉丝

57

获赞

27

评论

243

收藏

私信

关注

热门文章

burpsuite 五种代理抓包方式(本地、谷歌、火狐浏览器两种插件)

11586

CSDN中的文章下载、保存, 完美解决csdn文件保存问题,可以离线查看,也可以随意复制粘贴

6888

iTab插件谷歌浏览器安装、使用(程序员、开发、设计、摸鱼神器)

6748

Nessus、AWVS、Appscan、OWASP漏洞扫描工具的区别(介绍、测试对象对比、优劣对比、使用选择)

6267

漏洞扫描工具OWASP ZAP的下载、安装、使用教程

5410

分类专栏

网络安全-渗透测试

5篇

最新评论

Burpsuite专业版下载、安装、使用(JDK11)

2401_82955039:

提取码错误

Nessus 内网离线安装激活,使用,不需要邮箱获取激活码code,不需要获取linsence

m0_72683288:

不知道为什么跟着做完后,nessus里面登录进去还是只有设置,其它全没有

burpsuite 五种代理抓包方式(本地、谷歌、火狐浏览器两种插件)

Mr_Tru:

使用火狐浏览器+在线安装代理插件FoxyProxy中的第6步没有打勾怎么办

CSDN中的文章下载、保存, 完美解决csdn文件保存问题,可以离线查看,也可以随意复制粘贴

banzhang98:

太实用了,谢谢!

CSDN中的文章下载、保存, 完美解决csdn文件保存问题,可以离线查看,也可以随意复制粘贴

网络安全刚子:

有啊,你都已经下载下来了

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

网络安全-漏洞挖掘

网络安全-代码成分分析

网络安全-源代码安全审计

2023年19篇

目录

目录

分类专栏

网络安全-渗透测试

5篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

ZAP

ZAP

 ZAP

Home

Blog

Videos

Documentation

Community

Sponsor

Download

Zed Attack Proxy (ZAP)

The world’s most widely used web app scanner. Free and open source. Actively maintained by a dedicated international team of volunteers. A GitHub Top 1000 project.

Quick Start Guide

Download Now

Intro to ZAP

If you are new to security testing, then ZAP has you very much in mind. Check out our ZAP in Ten video series to learn more!

Automate with ZAP

ZAP provides range of options for security automation. Check out the automation docs to start automating!

ZAP Marketplace

ZAP marketplace contains add-ons that have been contributed by the community. Check out how you can extend ZAP with the add-ons!

We want to know more about you! Please fill in the

ZAP User Personas Questionnaire

A big thank you to our Platinum Sponsor(s):

For details of other ZAP sponsors see the Supporters page.

Home

Blog

Videos

Community

Sponsor

Statistics

ZAP is part of The Software Security Project

© Copyright 2024 the ZAP Dev Team

7个特性让ZAP成为应用安全测试中的重要工具 - FreeBuf网络安全行业门户

7个特性让ZAP成为应用安全测试中的重要工具 - FreeBuf网络安全行业门户

主站 分类

漏洞

工具

极客

Web安全

系统安全

网络安全

无线安全

设备/客户端安全

数据安全

安全管理

企业安全

工控安全

特色

头条

人物志

活动

视频

观点

招聘

报告

资讯

区块链安全

标准与合规

容器安全

公开课

报告 专辑 ···公开课···商城···

用户服务

··· 行业服务

政 府

CNCERT

CNNVD

会员体系(甲方)

会员体系(厂商)

产品名录

企业空间

知识大陆 搜索 创作中心 登录注册 官方公众号企业安全新浪微博 FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。 FreeBuf+小程序把安全装进口袋 7个特性让ZAP成为应用安全测试中的重要工具

关注

工具 7个特性让ZAP成为应用安全测试中的重要工具

2018-02-28 15:00:46

所属地 广东省 The Zed Attack Proxy (ZAP) 是一个开源工具,由 Open Web Application Security Project (OWASP) 维护,拥有庞大的开发人员社区,可快速提供新模块或附加组件。 ZAP的特性和功能有助于在web上执行手工渗透测试以及自动扫描。在本文中,我将介绍一些在任何安全测试中使 ZAP 成为首选工具的功能。 AJAX 爬虫在渗透测试期间,AJAX 爬虫可以发现丰富的基于 AJAX 的 web 资源,这是使用常规爬虫工具无法发现的。 AJAX 爬虫窗口可通过 ZAP -> Tools ->AJAX Spider (在 ZAP 的菜单栏) 访问。该工具支持参数配置,比如最大爬取深度,最大爬取状态,最长持续时间和其他选项,以防止无限爬取。 在我们的渗透测试中,我们首先使用常规的抓取工具来确定正在测试的应用程序的URL。在常规抓取后运行 AJAX 爬虫帮助我们获得了范围内所有应用程序资源的更精确的站点地图。 ZAP提供了使用 Selenium 通过浏览器自动打开应用程序的选项,并通过事件驱动的动态爬取引擎来探索应用程序。这减轻了手动遍历应用程序以捕获AJAX请求的需要。Fuzzing模糊测试工具是一种用于注入各种有效载荷以迫使应用程序进入不可预期状态的安全工具,可能会暴露出潜在的安全漏洞。在ZAP中,测试人员可以通过ZAP中内置的Dirbuster,FuzzDB和JbroFuzz等广泛的开源模糊负载列表中进行选择,这使得挖掘漏洞比以往更容易。 渗透测试人员可以选择手动上传有效载荷列表或通过编写自己的自定义脚本来生成有效载荷。 ZAP 模糊测试工具 还可以通过对模糊测试位置(在请求中),并发线程数量,延迟模糊等多种控制方式进行高度自定义。模糊测试工具还可以根据每个请求重新生成 Token 时在应用中自动刷新 Anti-CSRF Token。 当检测到Anti-CSRF Token 时,ZAP会自动记录 Token 和相关的 URL,从而在必要时重新生成 Token,防止 Token 出现丢失或无效的错误。Websocket 测试在如今,Websockets 的测试对于跨应用程序的普遍实现非常重要。使用ZAP,拦截,分析或修改客户端和服务器之间的websocket流量不能再简单了! Websocket 消息编辑器可通过ZAP菜单下的 Tools>>WebSocket Message Editor 访问。 该编辑器可用于修改字节码,目标地址或信息并发送回服务器。ZAP 还提供了每条消息的字节码的详细信息 - Text,Binary,Close,Ping 或 Pong。然后可以根据字节码或通道过滤消息以供进一步仔细检查。 websocket 消息也可以发送给模糊测试工具以供后续的有效载荷注入。 例如,我们曾经测试过一个客户的视觉协作平台,它是一个基于websockets的应用程序。 通过修改消息的目标并通过消息编辑器修改消息中的参数,我们能够鉴别出应用程序中的一个漏洞,可导致使用该应用程序接口的所有用户完全拒绝服务。灵活的扫描策略管理ZAP 提供了根据测试人员对每个应用程序的要求灵活组合扫描策略的功能。可以在菜单栏下的 Analyse>>Scan Policy Manager 中找到扫描策略管理器。 对于渗透测试人员来说,根据目标应用程序性能优化扫描器(而不导致DoS)至关重要。 因此,在设计扫描策略时考虑扫描人员的处理能力和带宽能力至关重要。可以更改扫描策略以包含或排除要执行的测试类型。 诸如阈值(其定义了潜在的漏洞可能被标记的可能性)、强度(定义每个测试的请求数量)之类的参数可以在ZAP中配置。很多时候,渗透测试人员需要测试他在目标应用程序中可能经常遇到的场景。 ZAP允许您设计自定义扫描策略,可以将其作为模板导出。 然后可以将此扫描策略模板导入ZAP并重新使用。通过 REST API 以编程方式与 ZAP 进行交互随着Web服务和微服务的增加,安全性从未如此重要。 ZAP 有一个定义和文档都非常好的 API,它可以通过各种工具,平台或自定义脚本以编程方式轻易的访问。ZAP API 可以直接通过浏览器或使用诸如Java,Python,Node JS,.NET,PHP和Go等编程语言使用。ZAP UI 可通过 http://zap 从浏览器中访问或通过 http://localhost: 从代理中访问。 此功能特别有助于我们将ZAP的一些核心功能集成到我们的漏洞测试平台中。ZAP Jenkins 插件随着越来越多的公司转向 DevSecOps 或采用敏捷安全测试方法,将动态应用程序安全性测试工具集成到他们的持续集成/持续交付管道(如 Jenkins )中正成为一种常态。拥有插件对于这样的集成至关重要。ZAP 的 Jenkins 插件 可以在 CI / CD pipeline 内集成安全测试。通过 Jenkins 插件,我们帮助客户将 ZAP 无缝集成到 DevOps pipeline 中,允许团队在每个版本中运行自动扫描。该插件可在流水线中启用多个 ZAP 操作,如 Spider Scans,AJAX Spidering,Active Scan,Managing Sessions,定义上下文和关联结果。高度脚本化许多安全测试可以通过脚本实现自动化,这可以减少花费在手动测试上的时间,同时让测试人员有更多时间专注于其他重要任务。在支持允许 JSR 223 脚本的脚本语言的工具中,ZAP 是最具可扩展性/可脚本化的工具之一。ZAP 具有可以运行嵌入其中的脚本并通过 ZAP 脚本附加功能访问内部数据结构和功能的特性。它支持多种脚本语言,包括 Javascript,Zest,Python,Groovy 和 Ruby。脚本支持独立运行,通过主动扫描规则运行,通过代理规则运行等。我们使用 ZAP 的“录制脚本”功能创建 Zest 脚本,以执行应用程序的自动遍历,通过ZAP代理处理请求,运行扫描并导出结果以供后续 聚合和关联。虽然这些功能可以在其他专用和公用的 DAST 工具中使用,但 ZAP 将这些功能(以及更多功能)封装在一个直观、高效的开源代码平台下,使其成为“即用型工具”以执行手动和自动安全扫描。*参考来源:we45,Ultracoder编译,转载请注明来自FreeBuf.COM 本文作者:,

转载请注明来自FreeBuf.COM # ZAP

被以下专辑收录,发现更多精彩内容

+ 收入我的专辑

+ 加入我的收藏

展开更多

相关推荐

关 注 0 文章数 0 关注者 本站由阿里云 提供计算与安全服务 用户服务 有奖投稿 提交漏洞 参与众测 商城 企业服务 安全咨询 产业全景图 企业SRC 安全众测 合作信息 斗象官网 广告投放 联系我们 友情链接 关于我们 关于我们 加入我们 微信公众号 新浪微博 战略伙伴 FreeBuf+小程序 扫码把安全装进口袋 斗象科技 FreeBuf 漏洞盒子 斗象智能安全平台 免责条款 协议条款

Copyright © 2020 WWW.FREEBUF.COM All Rights Reserved

   沪ICP备13033796号

|

沪公安网备

⚡ zap | Go 技术论坛

⚡ zap | Go 技术论坛

Go

话题列表

社区 Wiki

优质外文

招聘求职

Go 实战教程

社区文档

登录

注册

Go

首页

Laravel

Go

PHP

Python

Vue.js

Java

MySQL

Rust

LK

Elasticsearch

F2E 前端

程序员

Server

Database

DevTools

Computer Science

手机开发

AdonisJS

社区

Wiki

教程

Go 实战教程首页

《G01 Go 实战:Web 入门》

《G02 Go API 实战》

《GX1 Golang 五分钟视频》

文档

社区文档首页

《高效的 Go 编程 Effective Go》

《Go Blog 中文翻译》

《Go 简易教程》

《Go 编程实例 Go by Example》

《Go 入门指南》

《Go 编程基础(视频)》

《Go Web 编程》

《Iris 框架中文文档》

《通过测试学习 Go 编程》

《Gin 框架中文文档》

《GORM 中文文档》

《Go SQL 数据库教程》

登录

注册

微信登录

⚡ zap

9

5

1

村望老弟 的个人博客

/

429

/

1

/

创建于 2年前

Zap日志库

Go 中快速、结构化、分级的日志记录。

在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能:

能够将事件记录到文件中,而不是应用程序控制台。日志切割-能够根据文件大小、时间或间隔等来切割日志文件。支持不同的日志级别。例如INFO,DEBUG,ERROR等。能够打印基本信息,如调用文件/函数名和行号,日志时间等。

1.安装

go get -u go.uber.org/zap

请注意,zap只支持Go的两个最新的小版本。

2.默认的Go Logger

在介绍Uber-go的zap包之前,让我们先看看Go语言提供的基本日志功能。

Go语言提供的默认日志包是golang.org/pkg/log/

2.1 实现Go Logger

实现一个Go语言中的日志记录器非常简单:

创建一个新的日志文件,然后设置它为日志的输出位置

涉及到的api

OpenFile 既能打开一个已经存在的文件,也能创建并打开一个新文件。

func OpenFile(name string, flag int, perm FileMode) (*File, error)

package main

import (

"log"

"os"

)

func initGoLogger() {

locatonPath := "/Users/codehope/remote-es-server-code/zap-demo/test.log"

locationLoggerFile, _ := os.OpenFile(locatonPath,os.O_CREATE|os.O_APPEND|os.O_RDWR,0744)

log.SetOutput(locationLoggerFile)

}

func main() {

initGoLogger()

log.Printf("info %s","message")

}

当我们执行上面的代码,我们能看到一个test.log文件被创建,下面的内容会被添加到这个日志文件中

2021/11/02 14:08:43 info message

2.2 Go Logger的优势和劣势

优势

它最大的优点是使用非常简单。我们可以设置任何io.Writer作为日志记录输出并向其发送要写入的日志。

劣势

仅限基本的日志级别只有一个Print选项。不支持INFO/DEBUG等多个级别。对于错误日志,它有Fatal和Panic,Fatal日志通过调用os.Exit(1)来结束程序Panic日志在写入日志消息之后抛出一个panic,但是它缺少一个ERROR日志级别,这个级别可以在不抛出panic或退出程序的情况下而记录错误缺乏日志格式化的能力——例如记录调用者的函数名和行号,格式化日期和时间格式。等等。不提供日志切割的能力。

3.Uber-go Zap

【Zap是非常快的、结构化的,分日志级别的Go日志库。】

3.1 安装

运行下面的命令安装zap

go get -u go.uber.org/zap

3.2 配置Zap Logger

Zap提供了两种类型的日志记录器—Sugared Logger和Logger。

在性能很好但不是很关键的上下文中,使用SugaredLogger它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。

在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录。

通过调用zap.NewProduction()/zap.NewDevelopment()或者zap.Example()创建一个Logger。

上面的每一个函数都将创建一个logger。唯一的区别在于它将记录的信息不同。例如production logger默认记录调用函数信息、日期和时间等。

通过Logger调用Info/Error等。

默认情况下日志都会打印到应用程序的console界面。

package main

import (

"go.uber.org/zap"

"net/http"

)

var logger *zap.Logger

func simpleHttpGet(url string) {

resp, err := http.Get(url)

if err != nil {

logger.Error(

"Error fetching url..",

zap.String("url", url),

zap.Error(err))

} else {

logger.Info("Success..",

zap.String("statusCode", resp.Status),

zap.String("url", url))

err := resp.Body.Close()

if err != nil {

return

}

}

}

func main() {

logger, _ = zap.NewProduction()

simpleHttpGet("https://www.baidu.com")

simpleHttpGet("https://www.google.com")

}

测试执行输出结果:

{"level":"info","ts":1635834613.299716,"caller":"zap-demo/main.go:23","msg":"Success..","statusCode":"200 OK","url":"https://www.baidu.com"}

{"level":"error","ts":1635834643.3006458,"caller":"zap-demo/main.go:18","msg":"Error fetching url..","url":"https://www.google.com","error":"Get \"https://www.google.com\": dial tcp 185.45.6.103:443: i/o timeout","stacktrace":"main.simpleHttpGet\n\t/Users/codehope/remote-es-server-code/zap-demo/main.go:18\nmain.main\n\t/Users/codehope/remote-es-server-code/zap-demo/main.go:38\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:255"}

在上面的代码中,我们首先创建了一个Logger,然后使用Info/ Error等Logger方法记录消息。

日志记录器方法的语法是这样的:

func (log *Logger) MethodXXX(msg string, fields ...Field)

其中MethodXXX是一个可变参数函数,可以是Info / Error/ Debug / Panic等。每个方法都接受一个消息字符串和任意数量的zapcore.Field场参数。

每个zapcore.Field其实就是一组键值对参数。

3.3 Sugared Logger

现在让我们使用Sugared Logger来实现相同的功能。

大部分的实现基本都相同。惟一的区别是,我们通过调用主logger的. Sugar()方法来获取一个SugaredLogger。然后使用SugaredLogger以printf格式记录语句

package main

import (

"go.uber.org/zap"

"net/http"

)

var sluggerLogger *zap.SugaredLogger

/*

simpleHttpGet 带有日志的http请求

*/

func simpleHttpGet(url string) {

resp, err := http.Get(url)

if err != nil {

sluggerLogger.Errorf(

"Error fetching url..,url = %s,err= %d",

url,

err)

} else {

sluggerLogger.Infof("Success..,statusCode=%s.url=%s",

resp.Status,

url)

err := resp.Body.Close()

if err != nil {

return

}

}

}

func main() {

logger, _ := zap.NewProduction()

sluggerLogger = logger.Sugar()

simpleHttpGet("https://www.baidu.com")

}

当你执行上面的代码会得到如下输出:

{

"level":"info",

"ts":1635835735.4530501,

"caller":"zap-demo/sugerLoger.go:20",

"msg":"Success..,statusCode=200 OK.url=https://www.baidu.com"

}

【你应该注意到的了,到目前为止这两个logger都打印输出JSON结构格式。】

4.定制logger

4.1 将日志写入文件而不是终端

我们要做的第一个更改是把日志写入文件,而不是打印到应用程序控制台。

【 我们将使用zap.New(…)方法来手动传递所有配置,而不是使用像zap.NewProduction()这样的预置方法来创建logger 】

func New(core zapcore.Core, options ...Option) *Logger

zapcore.Core需要三个配置:

Encoder 编码器(如何写入日志)

我们将使用开箱即用的NewJSONEncoder(),并使用预先设置的ProductionEncoderConfig()

zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())

WriteSyncer 指定日志将写到哪里去

我们使用zapcore.AddSync()函数并且将打开的文件句柄传进去

file, _ := os.Create("./test.log")

writeSyncer := zapcore.AddSync(file)

LogLevel 哪种级别的日志将被写入

package main

import (

"fmt"

"go.uber.org/zap"

"go.uber.org/zap/zapcore"

"os"

)

/*

setJSONEncoder 设置logger编码

*/

func setJSONEncoder() zapcore.Encoder {

return zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())

}

/*

setLoggerWrite 设置logger写入文件

*/

func setLoggerWrite() zapcore.WriteSyncer {

//create, _ := os.OpenFile("./test.log",os.O_CREATE|os.O_APPEND|os.O_RDWR,0744)

create, err := os.OpenFile("./test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0755)

if err != nil {

fmt.Println(err)

}

return zapcore.AddSync(create)

}

func main() {

var logger *zap.SugaredLogger

core := zapcore.NewCore(setJSONEncoder(), setLoggerWrite(), zap.InfoLevel)

logger = zap.New(core).Sugar()

for i := 0; i < 10; i++ {

logger.Infof("Info%d", i)

logger.Errorf("Error%d", i)

logger.Debugf("Debug%d", i)

logger.Warnf("Warn%d", i)

}

}

上面代码执行后,发现多了一个test.log,发现只写入了Info,Error,Warn级别的log,Debug级别没有写入

{"level":"info","ts":1635837845.908652,"msg":"Info0"}

{"level":"error","ts":1635837845.908742,"msg":"Error0"}

{"level":"warn","ts":1635837845.9087548,"msg":"Warn0"}

{"level":"info","ts":1635837845.9087648,"msg":"Info1"}

{"level":"error","ts":1635837845.908774,"msg":"Error1"}

{"level":"warn","ts":1635837845.9087832,"msg":"Warn1"}

{"level":"info","ts":1635837845.908791,"msg":"Info2"}

{"level":"error","ts":1635837845.908799,"msg":"Error2"}

{"level":"warn","ts":1635837845.908808,"msg":"Warn2"}

{"level":"info","ts":1635837845.9088159,"msg":"Info3"}

{"level":"error","ts":1635837845.908824,"msg":"Error3"}

{"level":"warn","ts":1635837845.908832,"msg":"Warn3"}

{"level":"info","ts":1635837845.908841,"msg":"Info4"}

{"level":"error","ts":1635837845.908849,"msg":"Error4"}

{"level":"warn","ts":1635837845.908857,"msg":"Warn4"}

{"level":"info","ts":1635837845.908865,"msg":"Info5"}

{"level":"error","ts":1635837845.9088728,"msg":"Error5"}

{"level":"warn","ts":1635837845.908881,"msg":"Warn5"}

{"level":"info","ts":1635837845.908889,"msg":"Info6"}

{"level":"error","ts":1635837845.908897,"msg":"Error6"}

{"level":"warn","ts":1635837845.908905,"msg":"Warn6"}

{"level":"info","ts":1635837845.908913,"msg":"Info7"}

{"level":"error","ts":1635837845.908921,"msg":"Error7"}

{"level":"warn","ts":1635837845.908929,"msg":"Warn7"}

{"level":"info","ts":1635837845.908937,"msg":"Info8"}

{"level":"error","ts":1635837845.9089448,"msg":"Error8"}

{"level":"warn","ts":1635837845.9089532,"msg":"Warn8"}

{"level":"info","ts":1635837845.908961,"msg":"Info9"}

{"level":"error","ts":1635837845.908969,"msg":"Error9"}

{"level":"warn","ts":1635837845.9089768,"msg":"Warn9"}

4.2 将JSON Encoder更改为普通的Log Encoder

现在,我们希望将编码器从JSON Encoder更改为普通Encoder。

为此,我们需要将NewJSONEncoder()更改为NewConsoleEncoder()。

zapcore.NewConsoleEncoder

/*

setJSONEncoder 设置logger编码

*/

func setJSONEncoder() zapcore.Encoder {

return zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())

}

当使用这些修改过的logger配置调用上述部分的main()函数时,以下输出将打印在文件——test.log中。

1.635838141476396e+09 info Info0

1.635838141476515e+09 error Error0

1.6358381414765272e+09 warn Warn0

1.635838141476535e+09 info Info1

1.635838141476552e+09 error Error1

1.6358381414765608e+09 warn Warn1

1.635838141476567e+09 info Info2

1.635838141476574e+09 error Error2

1.635838141476581e+09 warn Warn2

1.635838141476587e+09 info Info3

1.6358381414765928e+09 error Error3

1.635838141476599e+09 warn Warn3

1.635838141476606e+09 info Info4

1.635838141476612e+09 error Error4

1.635838141476618e+09 warn Warn4

4.3 更改编码(格式化时间,日志级别大写)

鉴于我们对配置所做的更改,有下面问题:

时间是以非人类可读的方式展示,例如1.572161051846623e+09

我们要做的第一件事是覆盖默认的ProductionConfig(),并进行以下更改:

修改时间编码器在日志文件中使用大写字母记录日志级别

/*

setJSONEncoder 设置logger编码

*/

func setJSONEncoder() zapcore.Encoder {

encoderConfig := zap.NewProductionEncoderConfig()

encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder //转换编码的时间戳

encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder //编码级别调整为大写的级别输出

return zapcore.NewConsoleEncoder(encoderConfig)

}

修改编码配置后,重新执行后,test.log的内容:可以看到时间也被调整了,日志级别的格式也都为大写

2021-11-02T15:33:46.712+0800 INFO Info0

2021-11-02T15:33:46.712+0800 ERROR Error0

2021-11-02T15:33:46.712+0800 WARN Warn0

2021-11-02T15:33:46.712+0800 INFO Info1

2021-11-02T15:33:46.712+0800 ERROR Error1

2021-11-02T15:33:46.712+0800 WARN Warn1

2021-11-02T15:33:46.712+0800 INFO Info2

2021-11-02T15:33:46.712+0800 ERROR Error2

2021-11-02T15:33:46.712+0800 WARN Warn2

2021-11-02T15:33:46.712+0800 INFO Info3

2021-11-02T15:33:46.712+0800 ERROR Error3

2021-11-02T15:33:46.712+0800 WARN Warn3

2021-11-02T15:33:46.712+0800 INFO Info4

2021-11-02T15:33:46.712+0800 ERROR Error4

2021-11-02T15:33:46.712+0800 WARN Warn4

4.4 添加调用者详细信息

我们将修改zap logger代码,添加将调用函数信息记录到日志中的功能。为此,我们将在zap.New(..)函数中添加一个Option。

执行后test.log的内容,加入了对应目录/文件 行数的日志信息

2021-11-02T15:37:42.035+0800 INFO zap-demo/customLogger.go:36 Info0

2021-11-02T15:37:42.035+0800 ERROR zap-demo/customLogger.go:37 Error0

2021-11-02T15:37:42.035+0800 WARN zap-demo/customLogger.go:39 Warn0

2021-11-02T15:37:42.035+0800 INFO zap-demo/customLogger.go:36 Info1

2021-11-02T15:37:42.035+0800 ERROR zap-demo/customLogger.go:37 Error1

2021-11-02T15:37:42.035+0800 WARN zap-demo/customLogger.go:39 Warn1

2021-11-02T15:37:42.035+0800 INFO zap-demo/customLogger.go:36 Info2

2021-11-02T15:37:42.035+0800 ERROR zap-demo/customLogger.go:37 Error2

2021-11-02T15:37:42.035+0800 WARN zap-demo/customLogger.go:39 Warn2

2021-11-02T15:37:42.035+0800 INFO zap-demo/customLogger.go:36 Info3

2021-11-02T15:37:42.035+0800 ERROR zap-demo/customLogger.go:37 Error3

2021-11-02T15:37:42.035+0800 WARN zap-demo/customLogger.go:39 Warn3

2021-11-02T15:37:42.035+0800 INFO zap-demo/customLogger.go:36 Info4

2021-11-02T15:37:42.035+0800 ERROR zap-demo/customLogger.go:37 Error4

2021-11-02T15:37:42.035+0800 WARN zap-demo/customLogger.go:39 Warn4

5.使用Lumberjack进行日志切割归档

这个日志程序中唯一缺少的就是日志切割归档功能。

Zap本身不支持切割归档日志文件

为了添加日志切割归档功能,我们将使用第三方库Lumberjack来实现。安装执行下面的命令安装Lumberjack

go get -u github.com/natefinch/lumberjack

要在zap中加入Lumberjack支持,我们需要修改WriteSyncer代码。我们将按照下面的代码修改getLogWriter()函数:

func setLoggerWrite() zapcore.WriteSyncer {

//create, _ := os.OpenFile("./test.log",os.O_CREATE|os.O_APPEND|os.O_RDWR,0744)

//create, err := os.OpenFile("./test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0755)

//if err != nil {

// fmt.Println(err)

//}

l :=&lumberjack.Logger{

Filename:"./test.log", //Filename 是要写入日志的文件。

MaxSize: 1, //MaxSize 是日志文件在轮换之前的最大大小(以兆字节为单位)。它默认为 100 兆字节

MaxBackups: 1,//MaxBackups 是要保留的最大旧日志文件数。默认是保留所有旧的日志文件(尽管 MaxAge 可能仍会导致它们被删除。)

MaxAge: 30,//MaxAge 是根据文件名中编码的时间戳保留旧日志文件的最大天数。

Compress: true,//压缩

LocalTime: true, //LocalTime 确定用于格式化备份文件中的时间戳的时间是否是计算机的本地时间。默认是使用 UTC 时间。

}

return zapcore.AddSync(l)

}

测试一下代码:每次写入5000条日志,多次写入后

func main() {

var logger *zap.SugaredLogger

core := zapcore.NewCore(setJSONEncoder(), setLoggerWrite(), zap.InfoLevel)

logger = zap.New(core,zap.AddCaller()).Sugar()

for i := 0; i < 5000; i++ {

logger.Infof("Info%d", i)

logger.Errorf("Error%d", i)

logger.Debugf("Debug%d", i)

logger.Warnf("Warn%d", i)

}

}

test.log是我们自己一开始创建的log,test-2021-11…是lumberjack帮我们切割出来的新的日志文件,x x.log.gz是备份文件

6.Gin框架添加Zap日志库

6.1 整理日志包

首先我们创建一个单独的项目,并且把日志配置相关的放到项目单独的一个包中

目录结构:

~/remote-es-server-code/zap-demo  tree

.

├── go.mod

├── go.sum

├── logs

├── main.go

└── setup

└── CwLogger.go

2 directories, 4 files

CwLogger.go

package setup

import (

"github.com/natefinch/lumberjack"

"go.uber.org/zap"

"go.uber.org/zap/zapcore"

)

var logger *zap.SugaredLogger

/*

setJSONEncoder 设置logger编码

*/

func setJSONEncoder() zapcore.Encoder {

encoderConfig := zap.NewProductionEncoderConfig()

encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder //转换编码的时间戳

encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder //编码级别调整为大写的级别输出

return zapcore.NewConsoleEncoder(encoderConfig)

}

/*

setLoggerWrite 设置logger写入文件

*/

func setLoggerWrite() zapcore.WriteSyncer {

l :=&lumberjack.Logger{

Filename:"./logs/test.log",

MaxSize: 1,

MaxBackups: 1,

MaxAge: 30,

Compress: true,

LocalTime: true,

}

return zapcore.AddSync(l)

}

/*

InitLogger 初始化 logger

*/

func InitLogger() {

core := zapcore.NewCore(setJSONEncoder(), setLoggerWrite(), zap.InfoLevel)

logger = zap.New(core, zap.AddCaller()).Sugar()

}

func CwLog() *zap.SugaredLogger{

return logger

}

先简单测试一下执行:

package main

import "zap-demo/setup"

func init() {

setup.InitLogger() //初始化log

}

func main() {

setup.CwLog().Warn("this is a test!") //测试log

}

~/remote-es-server-code/zap-demo  tree

.

├── go.mod

├── go.sum

├── logs

│ └── test.log # 日志文件生成成功

├── main.go

└── setup

└── CwLogger.go

2 directories, 5 files

test.log 测试日志文件内容:

2021-11-02T16:27:41.032+0800 WARN zap-demo/main.go:9 this is a test!

6.2 替换gin框架的默认日志中间件

安装gin go get -u github.com/gin-gonic/gin

模版初始化

package main

import (

"github.com/gin-gonic/gin"

"zap-demo/setup"

)

func init() {

setup.InitLogger()

}

func main() {

router := gin.Default()

router.GET("/", func(context *gin.Context) {

context.JSON(200,"Hello Gin")

})

err := router.Run(":8008")

if err != nil {

return

}

}

运行时,可以发现Default的初始化方式,自带log的中间件,但是这个中间件我们没有办法去控制,所以要替换成我们的

//默认返回一个 Engine 实例,其中已经附加了 Logger 和 Recovery 中间件。

func Default() *Engine {

debugPrintWARNINGDefault()

engine := New()

engine.Use(Logger(), Recovery()) //这里我们也需要改造Recovery中间件

return engine

}

func New() *Engine {} 使用New的话是默认没有任何日志中间件在里面的,所以我们就使用这个来初始化gin引擎,并自己添加我们日志的中间件

// GinLogger 接收gin框架默认的日志

func GinLogger(logger *zap.Logger) gin.HandlerFunc {

return func(c *gin.Context) {

start := time.Now()

path := c.Request.URL.Path

query := c.Request.URL.RawQuery

c.Next()

cost := time.Since(start)

logger.Info(path,

zap.Int("status", c.Writer.Status()),

zap.String("method", c.Request.Method),

zap.String("path", path),

zap.String("query", query),

zap.String("ip", c.ClientIP()),

zap.String("user-agent", c.Request.UserAgent()),

zap.String("errors", c.Errors.ByType(gin.ErrorTypePrivate).String()),

zap.Duration("cost", cost),

)

}

}

// GinRecovery recover掉项目可能出现的panic(根据gin框架源码recover中间件改的)

func GinRecovery(logger *zap.Logger, stack bool) gin.HandlerFunc {

return func(c *gin.Context) {

defer func() {

if err := recover(); err != nil {

// Check for a broken connection, as it is not really a

// condition that warrants a panic stack trace.

var brokenPipe bool

if ne, ok := err.(*net.OpError); ok {

if se, ok := ne.Err.(*os.SyscallError); ok {

if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset by peer") {

brokenPipe = true

}

}

}

httpRequest, _ := httputil.DumpRequest(c.Request, false)

if brokenPipe {

logger.Error(c.Request.URL.Path,

zap.Any("error", err),

zap.String("request", string(httpRequest)),

)

// If the connection is dead, we can't write a status to it.

c.Error(err.(error)) // nolint: errcheck

c.Abort()

return

}

if stack {

logger.Error("[Recovery from panic]",

zap.Any("error", err),

zap.String("request", string(httpRequest)),

zap.String("stack", string(debug.Stack())),

)

} else {

logger.Error("[Recovery from panic]",

zap.Any("error", err),

zap.String("request", string(httpRequest)),

)

}

c.AbortWithStatus(http.StatusInternalServerError)

}

}()

c.Next()

}

}

测试:

package main

import (

"github.com/gin-gonic/gin"

"zap-demo/setup"

)

func init() {

setup.InitLogger()

}

func main() {

router := gin.New()

router.Use(setup.GinLogger(setup.CwLog()),setup.GinRecovery(setup.CwLog(),true))

router.GET("/", func(context *gin.Context) {

context.JSON(200,"Hello Gin")

})

err := router.Run(":8008")

if err != nil {

return

}

}

访问:localhost:8008/ 测试 生成了新的test.log,内容:可以看到我们的请求被我们自定义的日志中间件控制啦!

2021-11-02T16:56:06.092+0800 INFO setup/CwLogger.go:60 / {"status": 200, "method": "GET", "path": "/", "query": "", "ip": "::1", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36", "errors": "", "cost": 0.000044822}

本作品采用《CC 协议》,转载必须注明作者和本文链接

CunWang@Ch

本帖由系统于 2年前 自动加精

举报

村望老弟

88 声望

少年侠气,交结五都雄。肝胆洞。毛发耸。立谈中。死生同。一诺千金重

9 人点赞

讨论数量: 1

排序:

时间

投票

Bunny3936

课程读者

19 声望

4.4 添加调用者详细信息 小节,缺少代码:

zap.New(zapCore,zap.AddCaller()).Sugar()

1年前

评论

评论

举报

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!

支持 MD

帮助

关注本文

评论

村望老弟

未填写

文章

20

粉丝

2

喜欢

29

收藏

9

排名:1560

访问:1918

关注

私信

所有博文

阅读模式

文章归档

18 篇

2021 年 11 月

1 篇

2021 年 10 月

1 篇

2021 年 9 月

最新文章

最受欢迎

2年前

关于 Undefined

2年前

关于forEach同步异步的问题

2年前

Docker-Compose学习

2年前

Docker数据持久化

2年前

CMD和ENTRYPOINT命令

9

⚡ zap

4

学习go的第7天遇到的一个小题分析

2

关于 Undefined

2

Golang基础语法补充

2

Docker-Compose学习

博客标签

Golang学习

5

mac配置

1

Shell基础

2

Docker容器

9

Golang第三方库

1

Javascript基础

2

社区赞助商

成为赞助商

社区赞助商

成为赞助商

关于 LearnKu

LearnKu 是终身编程者的修道场

做最专业、严肃的技术论坛

LearnKu 诞生的故事

资源推荐

《社区使用指南》

《文档撰写指南》

《LearnKu 社区规范》

《提问的智慧》

服务提供商

其他信息

成为版主

所有测验

联系站长(反馈建议)

粤ICP备18099781号-6

|

粤公网安备 44030502004330号

|

违法和不良信息举报

由 Summer 设计和编码 ❤

请登录

提交

忘记密码?

or

注册

第三方账号登录

微信登录

GitHub 登录

内容举报

匿名举报,为防止滥用,仅管理员可见举报者。

我要举报该,理由是:

垃圾广告:恶意灌水、广告、推广等内容

无意义内容:测试、灌水、文不对题、消极内容、文章品质太差等

违规内容:色情、暴利、血腥、敏感信息等

不友善内容:人身攻击、挑衅辱骂、恶意行为

科学上网:翻墙、VPN、Shadowsocks,政策风险,会被关站!

不懂提问:提问太随意,需要再做一遍《提问的智慧》测验

随意提问:提问没有发布在社区问答分类下

排版混乱:没有合理使用 Markdown 编写文章,未使用代码高亮

内容结构混乱:逻辑不清晰,内容混乱,难以阅读

标题随意:标题党、标题不释义

尊重版权:分享付费课程、破解软件(付费),侵犯作者劳动成果

其他理由:请补充说明

举报

取消

【知识科普】安全测试OWASP ZAP简介 - 知乎

【知识科普】安全测试OWASP ZAP简介 - 知乎切换模式写文章登录/注册【知识科普】安全测试OWASP ZAP简介嘉为蓝鲸​已认证账号开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。其目的是协助个人、企业和机构来发现和使用可信赖软件。开放式Web应用程序安全项目(OWASP)是一个非营利组织,不附属于任何企业或财团。项目种类因此,由OWASP提供和开发的所有设施和文件都不受商业因素的影响,现在OWASP每年超过600W访问者,拥有了93个活跃项目。在OWASP的官网中所有的项目主要分为了三种:Tool Projects(工具类项目):工具类项目提供了各种各样的安全扫描工具,ZAP就是其中之一。Documentation Projects(文档类项目):文档类项目提供的是安全扫描的各种文档类指导Code Projects(代码类项目):代码类项目则是OWASP维护的开源工具代码。什么是ZAPZAP则是OWASP里的工具类项目,也是旗舰项目,全称是OWASP Zed attack proxy,是一款web application 集成渗透测试和漏洞工具,同样是免费开源跨平台的。ZAP主要覆盖了安全性测试里渗透测试即对系统进行模拟攻击和分析来确定其安全性漏洞。ZAP能够以代理的形式来实现渗透性测试,它将自己和浏览器之间设置一个中间人的角色,浏览器与服务器的任何交互都将经过ZAP,ZAP则可以通过对其抓包进行分析、扫描。同时,ZAP适用于所有的操作系统和Docker的版本,而且简单易用,还拥有强大的社区,能够在互联网上找到多种额外的功能插件。介绍完这么多,我们来看一下ZAP的基本功能。ZAP的基本功能在https://www.zaproxy.org/ ZAP官方网站下载完对应操作系统的客户端后,傻瓜式一键安装,我们便可以使用ZAP了。ZAP提供了两种扫描方式,Automated Scan(自动扫描)和Manual Explore(手动扫描),如下图:自动扫描,我们只要输入需要渗透的网址,以及Traditional Spider(抓取WEB程序中的HTML资源)和Ajax Spider(适用于有比较多Ajax请求的WEB程序)两个选项按钮,他就能开始检测我们的目标网址,并产生报告,如下:对于手动扫描而言,你需要选择渗透的网站和启动的浏览器,当你选择完后,会启动该网站的浏览器,并拥有ZAP的各种测试工具。对于手动扫描而言,你需要选择渗透的网站和启动的浏览器,当你选择完后,会启动该网站的浏览器,并拥有ZAP的各种测试工具。在这个特定的浏览器里,你能够开启、关闭扫描,查看报告,查看告警等多种功能。在所有的扫描中ZAP主要做了以下几件事:使用爬虫抓取被测站点的所有页面;在页面抓取的过程中被动扫描所有获得的页面;抓取完毕后用主动扫描的方式分析页面,功能和参数。其他功能在执行完渗透扫描后,ZAP还能提供多种形式的报告,包括XML、HTML、Markown、JSON格式,方便基于数据去做二次开发。在HTML报告中,能清晰的看到所有的告警描述、告警地址、请求方法、解决方案等信息,方便指导安全人员,开发人员解决告警。另外ZAP还能基于JSON、Script、表单等方式进行鉴权,来扫描一些必须要登录才能扫描的网站。可以通过导入证书访问不受信任的https网站,可以设置网络代理来实现不同网络的访问,还可以设置CSRF Token来添加一些有防止CSRF的网站阻止访问。这也就是为什么ZAP是可以从新手到安全专家都能使用的安全渗透工具。其他优质文章发布于 2020-06-09 17:33Web 应用Web 安全测试渗透测试​赞同 3​​添加评论​分享​喜欢​收藏​申请

ZAP中文(简体)翻译:剑桥词典

ZAP中文(简体)翻译:剑桥词典

词典

翻译

语法

同义词词典

+Plus

剑桥词典+Plus

Shop

剑桥词典+Plus

我的主页

+Plus 帮助

退出

剑桥词典+Plus

我的主页

+Plus 帮助

退出

登录

/

注册

中文 (简体)

查找

查找

英语-中文(简体)

zap 在英语-中文(简体)词典中的翻译

zapverb uk

Your browser doesn't support HTML5 audio

/zæp/ us

Your browser doesn't support HTML5 audio

/zæp/ -pp-

zap verb

(DESTROY)

Add to word list

Add to word list

[ T ] informal to get rid of or kill something or someone, especially intentionally

(尤指蓄意)破坏,谋杀

They have the kind of weapons that can zap the enemy from thousands of miles away.

他们拥有那种可以将敌人消灭在千里之外的武器。

figurative We're really going to zap the competition with this new product!

我们这种新产品的确无人能及!

zap verb

(GO QUICKLY)

[ I or T, usually + adv/prep ] UK informal to go somewhere or do something quickly

迅速去(某处);快速做

Have I got time to zap into town and do some shopping?

我有时间赶到市区去买些东西吗?

George zapped through his homework and rushed out to play basketball.

乔治匆匆做完作业,然后冲出去踢足球了。

There are now over a million American fax machines zapping (= sending quickly) messages from coast to coast.

现在有100多万台美国传真机在东西海岸之间迅速传递信息。

也请参见

zip noun (SPEED) informal

[ I usually + adv/prep ] informal to use an electronic device to change television channels quickly, sometimes to avoid watching advertisements

快速变换频道(以跳过电视广告)

[ T ] informal to cook something in a microwave

用微波炉烹饪

Don't bake potatoes in the oven, zap them in the microwave - dinner in 10 minutes!

别用烤箱烤土豆,用微波炉吧——晚餐十分钟就好。

zapnoun [ U ] mainly US informal uk

Your browser doesn't support HTML5 audio

/zæp/ us

Your browser doesn't support HTML5 audio

/zæp/

an electric shock or something similar

电击,电流;类似电击(或电流)的

The device gives cold batteries a zap of energy to bring them back to life.

这种设备给低温下的电池注入电流,使其恢复功用。

The zap is as strong as an electric eel's.

这种电流跟电鳗释放的强度类似。

(zap在剑桥英语-中文(简体)词典的翻译 © Cambridge University Press)

zap的例句

zap

It has the ability to zap objects with an electrical charge.

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

People are zapped with significantly higher tax on investments to which they have committed themselves.

来自 Hansard archive

该例句来自Hansard存档。包含以下议会许可信息开放议会许可v3.0

They reported difficulty in withdrawing from the drug and one peculiar effect of this drug and no other was electric "zaps".

来自 Hansard archive

该例句来自Hansard存档。包含以下议会许可信息开放议会许可v3.0

I was zapped by how much he knew about the subject.

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

Taking the last one, they forge into alien technology zapping the citizens.

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

Think of a dreadful fight with your girlfriend while blocking that chemical reaction, and zap!

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

A small alien transmats onto the kitchen table, where he uses a handheld device to zap the father.

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

One feature of the game was that no player could be zapped more than three consecutive times by the same player.

来自 Wikipedia

该例句来自维基百科,在CC BY-SA许可下可重复使用。

示例中的观点不代表剑桥词典编辑、剑桥大学出版社和其许可证颁发者的观点。

B1

zap的翻译

中文(繁体)

毀滅, (尤指蓄意)破壞,謀殺, 快速移動…

查看更多内容

西班牙语

cargarse a, calentar en el microondas, cocinar en el microondas…

查看更多内容

葡萄牙语

destruir, liquidar…

查看更多内容

更多语言

土耳其语

法语

日语

in Dutch

捷克语

丹麦语

印尼语

泰语

越南语

波兰语

in Swedish

马来语

德语

挪威语

in Ukrainian

俄语

öldürmek, vurmak, (vurarak) öldürmek…

查看更多内容

détruire, tuer, supprimer…

查看更多内容

消(け)す…

查看更多内容

vernietigen, schieten op, zappen…

查看更多内容

odprásknout, odstřelit, přepínat…

查看更多内容

udslette, zappe…

查看更多内容

membunuh, menghancurkan, mengganti…

查看更多内容

ฆ่าหรือทำลาย (โดยเฉพาะในเกมส์คอมพิวเตอร์), เปลี่ยนช่องโดยใช้รีโมทคอนโทรล…

查看更多内容

hạ gục, chuyển kênh từ xa…

查看更多内容

załatwić, zniszczyć, przełączać…

查看更多内容

döda, knäppa, träffa…

查看更多内容

membunuh, menukar siaran…

查看更多内容

ausschalten, umschalten…

查看更多内容

kverke, tilintetgjøre…

查看更多内容

убити, переключати…

查看更多内容

наносить удар, уничтожать…

查看更多内容

需要一个翻译器吗?

获得快速、免费的翻译!

翻译器工具

zap的发音是什么?

在英语词典中查看 zap 的释义

浏览

Zairean

Zambia

Zambian

zany

zap

zapper

zarf

ze

zeal

“每日一词”

veggie burger

UK

Your browser doesn't support HTML5 audio

/ˈvedʒ.i ˌbɜː.ɡər/

US

Your browser doesn't support HTML5 audio

/ˈvedʒ.i ˌbɝː.ɡɚ/

a type of food similar to a hamburger but made without meat, by pressing together small pieces of vegetables, seeds, etc. into a flat, round shape

关于这个

博客

Forget doing it or forget to do it? Avoiding common mistakes with verb patterns (2)

March 06, 2024

查看更多

新词

stochastic parrot

March 04, 2024

查看更多

已添加至 list

回到页面顶端

内容

英语-中文(简体)例句翻译

©剑桥大学出版社与评估2024

学习

学习

学习

新词

帮助

纸质书出版

Word of the Year 2021

Word of the Year 2022

Word of the Year 2023

开发

开发

开发

词典API

双击查看

搜索Widgets

执照数据

关于

关于

关于

无障碍阅读

剑桥英语教学

剑桥大学出版社与评估

授权管理

Cookies与隐私保护

语料库

使用条款

京ICP备14002226号-2

©剑桥大学出版社与评估2024

剑桥词典+Plus

我的主页

+Plus 帮助

退出

词典

定义

清晰解释自然的书面和口头英语

英语

学习词典

基础英式英语

基础美式英语

翻译

点击箭头改变翻译方向。

双语词典

英语-中文(简体)

Chinese (Simplified)–English

英语-中文(繁体)

Chinese (Traditional)–English

英语-荷兰语

荷兰语-英语

英语-法语

法语-英语

英语-德语

德语-英语

英语-印尼语

印尼语-英语

英语-意大利语

意大利语-英语

英语-日语

日语-英语

英语-挪威语

挪威语-英语

英语-波兰语

波兰语-英语

英语-葡萄牙语

葡萄牙语-英语

英语-西班牙语

西班牙语-英语

English–Swedish

Swedish–English

半双语词典

英语-阿拉伯语

英语-孟加拉语

英语-加泰罗尼亚语

英语-捷克语

英语-丹麦语

English–Gujarati

英语-印地语

英语-韩语

英语-马来语

英语-马拉地语

英语-俄语

English–Tamil

English–Telugu

英语-泰语

英语-土耳其语

英语-乌克兰语

English–Urdu

英语-越南语

翻译

语法

同义词词典

Pronunciation

剑桥词典+Plus

Shop

剑桥词典+Plus

我的主页

+Plus 帮助

退出

登录 /

注册

中文 (简体)  

Change

English (UK)

English (US)

Español

Русский

Português

Deutsch

Français

Italiano

中文 (简体)

正體中文 (繁體)

Polski

한국어

Türkçe

日本語

Tiếng Việt

हिंदी

தமிழ்

తెలుగు

关注我们

选择一本词典

最近的词和建议

定义

清晰解释自然的书面和口头英语

英语

学习词典

基础英式英语

基础美式英语

语法与同义词词典

对自然书面和口头英语用法的解释

英语语法

同义词词典

Pronunciation

British and American pronunciations with audio

English Pronunciation

翻译

点击箭头改变翻译方向。

双语词典

英语-中文(简体)

Chinese (Simplified)–English

英语-中文(繁体)

Chinese (Traditional)–English

英语-荷兰语

荷兰语-英语

英语-法语

法语-英语

英语-德语

德语-英语

英语-印尼语

印尼语-英语

英语-意大利语

意大利语-英语

英语-日语

日语-英语

英语-挪威语

挪威语-英语

英语-波兰语

波兰语-英语

英语-葡萄牙语

葡萄牙语-英语

英语-西班牙语

西班牙语-英语

English–Swedish

Swedish–English

半双语词典

英语-阿拉伯语

英语-孟加拉语

英语-加泰罗尼亚语

英语-捷克语

英语-丹麦语

English–Gujarati

英语-印地语

英语-韩语

英语-马来语

英语-马拉地语

英语-俄语

English–Tamil

English–Telugu

英语-泰语

英语-土耳其语

英语-乌克兰语

English–Urdu

英语-越南语

词典+Plus

词汇表

选择语言

中文 (简体)  

English (UK)

English (US)

Español

Русский

Português

Deutsch

Français

Italiano

正體中文 (繁體)

Polski

한국어

Türkçe

日本語

Tiếng Việt

हिंदी

தமிழ்

తెలుగు

内容

英语-中文(简体) 

 

Verb 

zap (DESTROY)

zap (GO QUICKLY)

Noun

例句

Translations

语法

所有翻译

我的词汇表

把zap添加到下面的一个词汇表中,或者创建一个新词汇表。

更多词汇表

前往词汇表

对该例句有想法吗?

例句中的单词与输入词条不匹配。

该例句含有令人反感的内容。

取消

提交

例句中的单词与输入词条不匹配。

该例句含有令人反感的内容。

取消

提交