gosec是一个用于在Go代码中查找安全问题的开源工具,它可以帮助发现可能的漏洞和潜在的安全风险。以下是关于gosec的详细介绍: 1.工具概述: gosec是一个静态分析工具,用于扫描Go代码以查找潜在的安全问题。它可以识别常见的代码漏洞、敏感信息泄露和其他安全问题,帮助开发人员提前发现并修复潜在的安全隐患。 2.功能特点 支持多种检查规则:gosec支持多种安全检查规则,包括代码注入、XSS攻击、SQL注入、敏感信息泄露等。 自定义配置:可以根据项目的需求自定义检查规则,以及指定要排除的文件或目录。 输出格式:gosec提供多种输出格式,包括控制台输出、JSON格式、JUnit报告等,以...

  SLI5qvYxXXnE   2023年11月02日   203   0   0 Go

本文是区块链浏览器系列的第四篇。 在上一篇文章介绍如何解析区块数据时,使用session对客户端上传的pb文件进行区分,到期后自动删除。 在这片文章中,会着重介绍下认证系统的实现,主要分为三部分: 添加数据库,存储用户信息 实现用户认证中间件 修改路由 1.用户信息存储 我这里使用MySQL来存储数据,使用gorm来实现与数据库的交换。 首先需要创建用户表: CREATETABLE`users`( `id`bigintunsignedNOTNULLAUTO_INCREMENT, `name`varchar(100)NOTNULL, `password`varchar(100)DEFAULT...

  SLI5qvYxXXnE   2023年11月02日   39   0   0 Go

fsnotify是一个用Go编写的文件系统通知库。它提供了一种观察文件系统变化的机制,例如文件的创建、修改、删除、重命名和权限修改。它使用特定平台的事件通知API,例如Linux上的inotify,macOS上的FSEvents,以及Windows上的ReadDirectoryChangesW。 fsnotify具有以下特点: 跨平台支持:fsnotify支持在不同的操作系统上运行,包括Linux、macOS和Windows。它会利用不同操作系统的文件系统通知机制,以获取文件变化的事件。 事件驱动:fsnotify以事件驱动的方式工作,可以捕获不同类型的文件系统事件,如创建、写入、删除、重命...

  SLI5qvYxXXnE   2023年11月02日   34   0   0 Go

在gRPC中使用JWT(JSONWebTokens)进行身份验证是一种常见的做法,它可以帮助你确保请求方的身份和权限。下面是一种使用gRPC和JWT进行身份验证的步骤: 生成和签发JWT:在用户登录成功后,你需要生成一个JWT并将其签发给用户。JWT中可以包含一些有关用户身份、角色、权限等的信息。 在gRPC的上下文中传递JWT:当客户端发送gRPC请求时,可以将JWT放置在gRPC请求的元数据(Metadata)中,作为请求的一部分。这样,服务器端就可以获取JWT并对其进行验证。 服务器端验证JWT:在gRPC服务端,你需要编写代码来验证接收到的JWT。这通常涉及到验证JWT的签名是否有效...

  SLI5qvYxXXnE   2023年11月02日   55   0   0 Go

goembed是Go1.16中引入的特性,它允许将文件嵌入到Go代码中,以便在运行时访问这些文件。这对于将静态资源(如HTML、CSS、JavaScript文件)直接嵌入到Go二进制文件中,以及简化文件分发和部署非常有用。下面是关于goembed的详细介绍: 使用方式: goembed支持将文件嵌入到代码中的两种方式: 嵌入单个文件:packagemain import( _"embed" "fmt" ) //go:embedmyfile.txt varcontentstring funcmain(){ fmt.Println(content) } 嵌入多个文件:packagemai...

  SLI5qvYxXXnE   2023年11月02日   47   0   0 Go

本文是区块链浏览器系列的第五篇,项目完整代码在这里。 在上一篇文章中给浏览器增加了简单的用户认证,至此浏览器的基本功能就已经大致完成了。 在这片文章中,我将使用kratos对区块链浏览器器进行重构,使之同时支持http和gRPC。 1.项目结构 项目结构如下: $tree . ├──api │  └──browser │  └──v1 │  ├──block_grpc.pb.go │  ├──block_http.pb.go │  ├──block.pb.go │  ├──b...

  SLI5qvYxXXnE   2023年11月02日   40   0   0 Go

pprof简介 pprof是Go语言的一个性能分析库,它可以帮助开发者找出程序中的性能瓶颈。pprof提供了CPU分析、内存分析、阻塞分析等多种性能分析功能。 以下是pprof的主要特性: CPU分析:pprof可以记录程序在CPU上的运行时间,并将这些数据以火焰图的形式展示出来。这可以帮助开发者找出程序中消耗CPU时间最多的部分。 内存分析:pprof可以记录程序的内存使用情况,包括堆内存、栈内存等。这可以帮助开发者找出程序中的内存泄漏。 阻塞分析:pprof可以记录程序中的阻塞情况,包括goroutine的阻塞、网络I/O的阻塞等。这可以帮助开发者找出程序中的性能瓶颈。 Web界面:pp...

  SLI5qvYxXXnE   2023年11月02日   116   0   0 Go

标准库cmp 原文在这里 go1.21新增cmp包提供了与有序变脸比较相关的类型和函数。 Ordered 定义如下: typeOrderedinterface{ int|int8|int16|int32|int64| uint|uint8|uint16|uint32|uint64|uintptr| float32|float64| string } Ordered是一个约束,它允许任何有序类型:任何支持<、<=、>=、>运算符的类型。如果Go的未来版本添加了新的有序类型,这个约束将被修改以包含它们。 请注意,浮点类型可能包含NaN("非数字")值。当使用...

  SLI5qvYxXXnE   2023年11月02日   83   0   0 Go

原文在这里。 由RussCox发布于2023年8月28日 开源软件的一个关键优势是任何人都可以阅读源代码并检查其功能。然而,大多数软件,甚至是开源软件,都以编译后的二进制形式下载,这种形式更难以检查。如果攻击者想对开源项目进行供应链攻击,最不可见的方式是替换正在提供的二进制文件,同时保持源代码不变。 解决这种类型的攻击的最佳方法是使开源软件的构建具有可重现性,这意味着以相同的源代码开始的每个构建都会产生相同的输出。这样,任何人都可以通过从真实源代码构建并检查重建的二进制文件是否与已发布的二进制文件完全相同来验证发布的二进制文件是否没有隐藏的更改。这种方法证明了二进制文件没有后门或源代码中不...

  SLI5qvYxXXnE   2023年11月02日   34   0   0 Go

在开发应用程序时,记录日志是一项关键的任务,以便在应用程序运行时追踪问题、监视性能和保留审计记录。Go语言提供了灵活且强大的日志记录功能,可以通过多种方式配置和使用。其中一个常用的日志记录库是github.com/natefinch/lumberjack,它提供了一个方便的方式来处理日志文件的轮换,以防止日志文件无限增长。 本文将详细介绍github.com/natefinch/lumberjack,包括其主要特点、如何使用它以及示例代码。让我们一起深入了解这个有用的Go语言日志记录库。 主要特点 github.com/natefinch/lumberjack的主要特点包括: 日志轮换:它允...

  SLI5qvYxXXnE   2023年11月02日   108   0   0 Go

原文在这里。 由JohanBrandhorst-Satzkorn,JulienFabre,DamianGryski,EvanPhoenix,andAchilleRoussel发布于2023年9月13日 Go1.21添加了一个新的端口,通过新的GOOS值wasip1来定位WASI预览1系统调用API。该端口建立在Go1.11引入的现有WebAssembly端口的基础上。 WebAssembly是什么 WebAssembly(Wasm)是一种最初设计用于Web的二进制指令格式。它代表了一个标准,允许开发人员在Web浏览器中以接近本机速度直接运行高性能、低级别的代码。 Go首次在1.11版本中添...

  SLI5qvYxXXnE   2023年11月02日   58   0   0 Go

什么是Prometheus Prometheus是一个开源的系统监控和警报工具,最初由SoundCloud开发,并于2012年发布为开源项目。它是一个非常强大和灵活的工具,用于监控应用程序和系统的性能,并根据预定义的规则触发警报。以下是对Prometheus的详细介绍: 特点和优势: 多维数据模型:Prometheus使用多维数据模型来存储时间序列数据。每个时间序列都由一组键值对唯一标识,这使得数据非常灵活且容易查询。 灵活的查询语言:Prometheus使用一种称为PromQL(PrometheusQueryLanguage)的查询语言,允许用户执行复杂的查询和数据分析操作。你可以使用Pr...

  SLI5qvYxXXnE   2023年11月02日   74   0   0 Go

在开发Go应用程序时,处理配置是一个常见的需求。配置可能来自于配置文件、环境变量、命令行参数等等。Viper是一个强大的库,可以帮助我们处理这些配置。 什么是Viper? Viper是一个应用程序配置解决方案,用于Go应用程序。它支持JSON、TOML、YAML、HCL、envfile和Javaproperties配置文件格式。它还支持环境变量、命令行标志、远程配置系统(如etcd或Consul),并且可以直接监控配置文件的变化。 如何使用Viper? 读取配置文件 首先,我们需要告诉Viper去哪里找配置文件,以及如何读取它们。这可以通过以下代码实现: viper.SetConfigName...

  SLI5qvYxXXnE   2023年11月02日   81   0   0 Go

Merkle树(MerkleTree)是一种树状数据结构,通常用于验证大规模数据集的完整性和一致性。它的名字来源于其发明者RalphMerkle。Merkle树在密码学、分布式系统和区块链等领域得到广泛应用,尤其在区块链中,它用于验证交易和区块的完整性,确保数据不被篡改。 下面是Merkle树的介绍: 1.结构 Merkle树是一种二叉树,其中每个叶子节点包含数据块的哈希值,而每个非叶子节点包含其子节点哈希值的组合(通常是子节点哈希的拼接或哈希)。这种结构使得Merkle树具有高效的验证能力,因为任何时候,只需要验证一小部分节点的哈希值即可验证整个数据集的完整性。 Merkle树的根节点称为M...

  SLI5qvYxXXnE   2023年11月02日   54   0   0 Go

这里以Chrome为例。 1.准备工作 wsl是可以使用Windows主机上安装的exe程序,出于安全考虑,默认情况下改功能是无法使用。要使用的话,终端需要以管理员权限启动。 我这里以WindowsTerminal为例,介绍如何默认使用管理员权限打开终端,具体操作如下图所示: 2.操作 wsl使用Windows主机的浏览器,其实就是在wsl中创建对应程序的软链接。 我这里是把软链接放在了/usr/bin目录下,具体操作如下: cd/usr/bin sudoln-s/mnt/c/Program\Files/Google/Chrome/Application/chrome.exemschrom...

  SLI5qvYxXXnE   2023年11月01日   96   0   0 Windows

文中的操作都是在CentOSStreamrelease9下执行的,使用的是root用户。 1.安装docker 卸载原有的docker yumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine 安装依赖 yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 配置docker-ce源 yum-config-manager--add-repoht...

  SLI5qvYxXXnE   2023年11月01日   126   0   0 网络安全

在HyperledgerFabric中,LSCC(LifecycleSystemChaincode)、CSCC(ChaincodeSystemChaincode)、QSCC(QuerySystemChaincode)、ESCC(EndorsementSystemChaincode)和VSCC(ValidationSystemChaincode)是五个重要的系统链码。它们各自承担着不同的功能和责任,共同构成了HyperledgerFabric的核心机制和特性。下面对每个系统链码进行详细介绍: 1.LSCC(LifecycleSystemChaincode):LSCC是用于管理和控制链码生命周期的...

  SLI5qvYxXXnE   2023年11月01日   102   0   0 区块链

表象:Returnschemainvalid.requireditemsmustbeunique[recovered] 虽然Fabricv2.2已经发布了很久了,但之前因为项目历史问题,一直使用的都是Fabricv1.4.8,所以智能合约也一直使用的都是github.com/hyperledger/fabric/core/chaincode/shim包。 在合约开发过程中,我一般都是使用下面的接口格式来定义合约的业务逻辑: funccreate(stubshim.ChaincodeStubInterface,payloadstring)([]byte,error) 在开发Fabricv2.2...

  SLI5qvYxXXnE   2023年11月01日   107   0   0 区块链

查询结果导出到文件 终端命令下直接导出 除了在mysql命令行下导出查询结果,还可以在终端直接导出查询结果到文件中: mysql-uroot-p-e"selectfromtest">xxx.csv如果导出结果中涉及到中文,可以使用--default-character-set=utf8mb4指定查询结果使用utf8mb4字符集 INTOOUTFILE 可以在mysql命令行下使用INTOOUTFILE参数将查询结果导出到文件中: selectfromtestINFOOUTFILE'/var/lib/mysql/xxx.csv' 使用INTOOUTFILE时需要设置secure_f...

  SLI5qvYxXXnE   2023年11月01日   53   0   0 MySQL

MySQL存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 什么是MySQL存储过程? MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库中,可以随时被调用执行。存储过程可以接受输入参数、执行一系列操作,并返回结果。这些特性使得存储过程成为处理复杂查询、数据操作和事务管理的理想工具。 创建存储过程 要创建一个MySQL存储过程,你可以使用CREATEPROCEDURE语句。以下是一个简单的示例: DELIMITER// CREATEPR...

  SLI5qvYxXXnE   2023年11月01日   191   0   0 MySQL
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~