本教程介绍了 Go 中模糊测试的基础知识。通过模糊测试,随机数据会针对您的测试运行,以尝试找出漏洞或导致崩溃的输入。可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了南乐免费建站欢迎大家使用!
在本教程中,您将为一个简单的函数编写一个模糊测试,运行 go 命令,并调试和修复代码中的问题。
首先,为您要编写的代码创建一个文件夹。
1、打开命令提示符并切换到您的主目录。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,为您的代码创建一个名为 fuzz 的目录。
3、创建一个模块来保存您的代码。
运行go mod init命令,为其提供新代码的模块路径。
接下来,您将添加一些简单的代码来反转字符串,稍后我们将对其进行模糊测试。
在此步骤中,您将添加一个函数来反转字符串。
a.使用您的文本编辑器,在 fuzz 目录中创建一个名为 main.go 的文件。
独立程序(与库相反)始终位于 package 中main。
此函数将接受string,使用byte进行循环 ,并在最后返回反转的字符串。
此函数将运行一些Reverse操作,然后将输出打印到命令行。这有助于查看运行中的代码,并可能有助于调试。
e.该main函数使用 fmt 包,因此您需要导入它。
第一行代码应如下所示:
从包含 main.go 的目录中的命令行,运行代码。
可以看到原来的字符串,反转它的结果,然后再反转它的结果,就相当于原来的了。
现在代码正在运行,是时候测试它了。
在这一步中,您将为Reverse函数编写一个基本的单元测试。
a.使用您的文本编辑器,在 fuzz 目录中创建一个名为 reverse_test.go 的文件。
b.将以下代码粘贴到 reverse_test.go 中。
这个简单的测试将断言列出的输入字符串将被正确反转。
使用运行单元测试go test
接下来,您将单元测试更改为模糊测试。
单元测试有局限性,即每个输入都必须由开发人员添加到测试中。模糊测试的一个好处是它可以为您的代码提供输入,并且可以识别您提出的测试用例没有达到的边缘用例。
在本节中,您将单元测试转换为模糊测试,这样您就可以用更少的工作生成更多的输入!
请注意,您可以将单元测试、基准测试和模糊测试保存在同一个 *_test.go 文件中,但对于本示例,您将单元测试转换为模糊测试。
在您的文本编辑器中,将 reverse_test.go 中的单元测试替换为以下模糊测试。
Fuzzing 也有一些限制。在您的单元测试中,您可以预测Reverse函数的预期输出,并验证实际输出是否满足这些预期。
例如,在测试用例Reverse("Hello, world")中,单元测试将返回指定为"dlrow ,olleH".
模糊测试时,您无法预测预期输出,因为您无法控制输入。
但是,Reverse您可以在模糊测试中验证函数的一些属性。在这个模糊测试中检查的两个属性是:
(1)将字符串反转两次保留原始值
(2)反转的字符串将其状态保留为有效的 UTF-8。
注意单元测试和模糊测试之间的语法差异:
(3)确保新包unicode/utf8已导入。
随着单元测试转换为模糊测试,是时候再次运行测试了。
a.在不进行模糊测试的情况下运行模糊测试,以确保种子输入通过。
如果您在该文件中有其他测试,您也可以运行go test -run=FuzzReverse,并且您只想运行模糊测试。
b.运行FuzzReverse模糊测试,查看是否有任何随机生成的字符串输入会导致失败。这是使用go test新标志-fuzz执行的。
模糊测试时发生故障,导致问题的输入被写入将在下次运行的种子语料库文件中go test,即使没有-fuzz标志也是如此。要查看导致失败的输入,请在文本编辑器中打开写入 testdata/fuzz/FuzzReverse 目录的语料库文件。您的种子语料库文件可能包含不同的字符串,但格式相同。
语料库文件的第一行表示编码版本。以下每一行代表构成语料库条目的每种类型的值。由于 fuzz target 只需要 1 个输入,因此版本之后只有 1 个值。
c.运行没有-fuzz标志的go test; 新的失败种子语料库条目将被使用:
由于我们的测试失败,是时候调试了。
这样去掉,首先以系统管理员身份打开Windows Server 2008系统的“开始”菜单,从中选择“运行”命令,在其后的系统运行框中输入“msconfig”字符串命令,单击“确定”按钮后,进入本地服务器的系统配置对话框;
其次在该对话框中单击“工具”标签,打开如图1所示的标签设置页面,从该页面的工具名称列表框中选择“启用UAC”选项,再单击对应设置页面中的“启动”按钮,随后根据屏幕提示重新启动一下Windows Server 2008系统,这样一来网络管理员日后在本地服务器系统中安装应用程序或执行文件删除操作时,就能看到系统弹出用户账号控制提示窗口了,那么本地服务器系统的安全自然也就多了一层保护。
安全登录,谨防账号密码丢失
很多时候,网络管理员为了提高服务器系统的登录效率,常常会将自己使用的系统管理员账号设置成自动登录本地服务器系统,而不希望每次登录系统都要重复账号信息与密码信息;然而在自动登录服务器系统的过程中,一些具有模仿登录功能的木马程序能够偷偷获取到自动登录系统时所使用的系统管理员账号以及密码信息,一旦服务器系统的管理员账号及密码被丢失的话,那么本地服务器系统的安全性自然也就会受到很大的威胁。为了保护服务器系统的安全,我们可以在Windows Server 2008系统环境下强行限制任意一位用户进行安全登录,以避免系统管理员账号以及密码信息发生丢失,下面就是具体的设置步骤:
首先以系统管理员身份打开Windows Server 2008系统的“开始”菜单,从中选择“运行”命令,在其后的系统运行框中输入“control userpasswords2”字符串命令,单击“确定”按钮后,进入本地服务器的用户账户设置对话框;
其次在该设置对话框中单击“用户”标签,选中对应标签设置页面中的“要使用本机,用户必须输入用户名和密码”选项,之后单击“高级”标签,打开如图2所示的标签设置页面;在该设置页面的“安全登录”设置项处,选中“要求用户按Ctrl+Alt+Delete”选项,再单击“确定”按钮,那样一来任何一位用户登录Windows Server 2008系统之前,都需要按下Ctrl+Alt+Delete复合键,打开系统登录对话框,然后手工输入系统管理员账号才能登录进本地服务器系统,而此时手工输入的系统管理员账号名称以及密码是不会被模仿登录登录所窃取的。
设置策略,显示账号登录状态
不少用户在实际工作过程中,有时会遇到过这样一则尴尬现象,那就是当用户有要事突然临时离开自己的计算机系统时,总有一些闲得没事做的同事趁主人不在的时刻偷偷登录进别人的计算机系统,去随意偷窥其中的隐私信息。其实,如果用户的计算机系统中没有存储什么特别重要的信息,也就罢了;要是保存有重要隐私信息,并且这些牵涉到自己或者单位的核心机密内容被其他人偷看到的话,那可能会给自己甚至单位造成不小的损失。那么,对于那些喜欢偷窥别人隐私信息的人,我们能否找到一种有效的办法,对他们的恶意偷窥行为进行监视,一经发现这些非法用户偷偷登录自己的计算机系统时,让系统能够自动对这种非法登录行为进行记录取证,日后作为追究非法用户责任的一种证据呢?其实很简单,我们可以在Windows Server 2008系统环境下,通过设置系统的组策略参数,来显示上次登录系统的所有登录状态信息,这样的话非法用户偷偷登录Windows Server 2008系统的行为就被跟踪记录下来了:
首先以系统管理员身份登录进Windows Server 2008服务器系统,依次单击“开始”/“运行”命令,在弹出的系统运行文本框中,输入“gpedit.msc”字符串命令,再单击回车键后,打开本地服务器系统的组策略编辑界面;
其次用鼠标展开该组策略编辑界面左侧显示窗格中的“计算机配置”节点选项,再从该节点下面依次单击“管理模板”/“Windows组件”/“Windows登录选项”子项,找到“Windows登录选项”子项下面的目标组策略选项“在用户登录期间显示有关以前登录的信息”,用鼠标右键单击该选项,并执行右键菜单中的“属性”命令打开如图3所示的组策略属性设置对话框,选中“已启动”选项,再点击设置对话框中的“确定”按钮结束组策略属性设置操作,这样一来Windows Server 2008系统就能对上一次登录系统的状态信息进行自动记录保存了。
那么,日后要是有非法用户趁我们不在计算机现场时偷偷登录自己的系统时,我们该怎样才能查询到本地系统是否已经被他人偷偷登录过呢?其实很简单,我们可以按常规操作重新启动计算机系统,然后输入正确的系统登录账号以及密码信息,再单击“确定”按钮,随后Windows Server 2008系统就会自动弹出一个简要的系统登录列表信息,仔细检查这里是否存在陌生的登录账号名称,如果存在的话那个陌生登录账号就是非法偷窥本地系统隐私信息的非法用户,到时我们根据这点证据找到恶意用户,向他追究相关责任。
WindowsServer2008下账号控制我有道.doc
下载Word文档到电脑,方便收藏和打印[全文共2794字]
编辑推荐:
下载Word文档
web测试框架有哪些
Web自动化测试在测试领域里面用得比较多的工具或者框架有Selenium, robotframework, Cucumber等。 Selenium是一个开源的Web自动化测试框架,主要用于做HTM
java获取jsp源码
一、GetURL.java import java.io.*; import java.net.*; public class GetURL { public static void main(S
windows过去同音词
公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 大家好,我是小 G。 如果你这两天有关注 GitHub Trending,应该能注意到,一款名为「
css所有一类元素
这篇想要跟大家分享的是css中的伪类和伪元素,有任何问题可以私聊我或者评论哦! 首先,我们先来想一下 一、引入伪类跟伪元素的原因? 伪类和伪元素的引入是因为在文档树里有些信息无法被充分描述
html设置上下边框大小
目录 理论知识: 示例一:简单边框 示例二:边框和表格 示例三:边框和图片 示例四:边框和文章 理论知识: 边框的写法: border: 边框的宽度 样式 颜色; 边框的四
文字底部对齐的css
css怎么让文字在底部对齐CSS怎么在底部对齐文本,Css将文本在底部对齐:1。将“display:table-cell”设置为包含文本的元素容器;垂直对齐:底部;“风格够;2.使用定位属性位置
123go吃东西大挑战
一、引子 文章结合尚硅谷Go语言教程以及博学谷、等其他资料整理,侵删 原PDF阅读: .
tomcat老是安装不上去
本文开发环境:windos7 , Eclipse-mars , JDK1.7 , Tomcat7.0 本文本是群里的内部资料,不过本着分享的精神,也发出来吧,我相信,这应该是比较详细的一篇文章了。
如何用ftp下载a
本文介绍如何使用 java.net.URLConnection 类从 FTP 服务器下载远程文件,而无需使用第三方库,如 Apache Common
网络与web安全
在Web信息系统高速发展的今天,Web信息系统的各种各样的安全问题已暴漏在我们面前。Web信息系统各种安全问题潜伏在Web系统中,Web系统的时时刻刻遭受各种攻击的安全威胁。这里就跟大家聊聊
怎样确认tomcat的端口
Tomcat端口配置(详细) 目录 一、修改8080端口 1.1 在cmd中查看8080有没有被占用,找出占用8080端口的进程 1.2、接下来可以在任务管理
oracle强制转换数字
-- Start Oracle 为每种数据类型都提供了相应的函数,一般情况下它们之间的相互转换是非常简单的,Oracle 提供的函数有: CAST 将一种类型转成另一种类型 TO_DATE
技术分类
nodeandroidgotomcatwebandroidreacttomcatjavavuesassmysqlredisapachenginxcssjspjqueryreactftp
推荐文章
• FTP报表核对
• 喵污直播app在哪里可以下载
• js新增图片
• java时钟遇到的问题
• log4j影响的java版本
• html5标记热点区域
• oracle表空间和用户名
• 华为css使用什么协议
• vue常用歌曲
• 怎么连接外网ftp服务器
• php什么是静态方法
• java分销平台项目
用户协议-隐私政策-免责声明-关于我们
版权所有 © 2021 妖怪工作室 粤ICP备2021001854号
链接:
来源:外卖怪
本教程介绍 Go 中多模块工作区的基础知识。使用多模块工作区,您可以告诉 Go 命令您正在同时在多个模块中编写代码,并轻松地在这些模块中构建和运行代码。
在本教程中,您将在共享的多模块工作区中创建两个模块,对这些模块进行更改,并在构建中查看这些更改的结果。
本教程需要 go1.18 或更高版本。使用go.dev/dl中的链接确保您已在 Go 1.18 或更高版本中安装了 Go 。
首先,为您要编写的代码创建一个模块。
1、打开命令提示符并切换到您的主目录。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,为您的代码创建一个名为工作区的目录。
3、初始化模块
我们的示例将创建一个hello依赖于 golang.org/x/example 模块的新模块。
创建你好模块:
使用 . 添加对 golang.org/x/example 模块的依赖项go get。
在 hello 目录下创建 hello.go,内容如下:
现在,运行 hello 程序:
在这一步中,我们将创建一个go.work文件来指定模块的工作区。
在workspace目录中,运行:
该go work init命令告诉为包含目录中模块的工作空间go创建一个文件 。go.work./hello
该go命令生成一个go.work如下所示的文件:
该go.work文件的语法与go.mod相同。
该go指令告诉 Go 应该使用哪个版本的 Go 来解释文件。它类似于文件中的go指令go.mod 。
该use指令告诉 Go在进行构建时hello目录中的模块应该是主模块。
所以在模块的任何子目录中workspace都会被激活。
2、运行工作区目录下的程序
在workspace目录中,运行:
Go 命令包括工作区中的所有模块作为主模块。这允许我们在模块中引用一个包,即使在模块之外。在模块或工作区之外运行go run命令会导致错误,因为该go命令不知道要使用哪些模块。
接下来,我们将golang.org/x/example模块的本地副本添加到工作区。然后,我们将向stringutil包中添加一个新函数,我们可以使用它来代替Reverse.
在这一步中,我们将下载包含该模块的 Git 存储库的副本golang.org/x/example,将其添加到工作区,然后向其中添加一个我们将从 hello 程序中使用的新函数。
1、克隆存储库
在工作区目录中,运行git命令来克隆存储库:
2、将模块添加到工作区
该go work use命令将一个新模块添加到 go.work 文件中。它现在看起来像这样:
该模块现在包括example.com/hello模块和 `golang.org/x/example 模块。
这将允许我们使用我们将在模块副本中编写的新代码,而不是使用命令stringutil下载的模块缓存中的模块版本。
3、添加新功能。
我们将向golang.org/x/example/stringutil包中添加一个新函数以将字符串大写。
将新文件夹添加到workspace/example/stringutil包含以下内容的目录:
4、修改hello程序以使用该功能。
修改workspace/hello/hello.go的内容以包含以下内容:
从工作区目录,运行
Go 命令在go.work文件指定的hello目录中查找命令行中指定的example.com/hello模块 ,同样使用go.work文件解析导入golang.org/x/example。
go.work可以用来代替添加replace 指令以跨多个模块工作。
由于这两个模块在同一个工作区中,因此很容易在一个模块中进行更改并在另一个模块中使用它。
现在,要正确发布这些模块,我们需要发布golang.org/x/example 模块,例如在v0.1.0. 这通常通过在模块的版本控制存储库上标记提交来完成。发布完成后,我们可以增加对 golang.org/x/example模块的要求hello/go.mod:
这样,该go命令可以正确解析工作区之外的模块。
GO语言+区块链培训课程优势
1、 Go有什么优势
Go的优势
1:性能
2:语言性能很重要
3:开发者效率不要过于创新
4:并发性通道
5:快速的编译时间
6:打造团队的能力
7:强大的生态系统
8:GOFMT,强制代码格式
9:gRPC 和 Protocol Buffers
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
适合人群:
1.没有编程基础,想学IT技术的人群;
2.发展受限,想要提升的人群;
3.有编程经验,想要转行的人群。
学习目标:
从0开始学习Go语言,通过对Go语言的学习综合培养区块链专项应用型人才。
就业方向:
1.新技术Go语言开发(Web开发、微服务、分布式)。
2.新领域区块链开发(密码学安全、区块链系统、区块链应用)。
数码产品用久都会缓存一些垃圾,像手机、ipad、笔记本,这些产品用得时间长了,你就会发现卡、运行慢,这些时候是需要进行垃圾清理,就拿ipad平板来说,像ipad平板的垃圾怎么清楚?
步骤1:删除Safari的缓存
我们将从清除Safari中的缓存开始。请注意,这将使您退出所有已登录的网站。
打开“设置”,然后向下滚动至第五组选项(顶部为“密码和帐户”)。点击Safari。
再次向下滚动并点击“清除历史记录和网站数据”。
点击“清除历史记录和数据”进行确认。
步骤2:清除应用程式资料
可以使用“设置”中的“使用情况”选项清除其他应用程序存储的数据。按着这些次序:
点击设置常规 iPhone存储。(毫不奇怪,在iPad上,它将被标记为iPad Storage。)
在屏幕底部,您将看到您的应用程序,按其占用的存储量排列。点击一个占用大量空间的应用。
如果“文档和数据”图大于500MB,则应考虑删除并重新安装该应用程序以清除此空间。(下面的应用程序只有3.3MB,因此我们不会打扰。)请记住,这并不是无效数据:它将包括保存游戏,文档,首选项,用于基准测试应用程序的下载数据等。
如果您决定继续,请点击“删除应用”,确认,然后前往App Store(或“已购买”列表)并重新下载。此全新安装不包括数据和文档。
步骤3:通过重新启动iPhone或iPad释放内存
在大多数情况下,iOS将在无需任何用户参与的情况下很好地管理内存。但是我们确实发现,不时重启iPhone是清除内存并确保重要的应用程序能够足够快乐地运行的好方法。
这是重启iPhone的方法:
按住电源按钮(位于设备的顶部或右上方),直到出现“滑动以关闭电源”。如果您的iPhone没有Home键(XR,11、11 Pro等),则需要同时按住电源和增大音量,直到出现滑块为止。
滑动电源关闭滑块。
等到设备完全关闭电源,然后按住电源按钮再次打开iPhone。
定期执行此操作在iPhone上非常重要,但如今却很少。尽管如此,它在旧型号上仍然有用。
步骤4:下载更清洁的应用
那里有许多应用程序可以快速高效地清除不需要的文件。这些通常会下载到您的Mac或PC;然后,您可以连接iPhone(或iPad)并让应用执行其操作。
清洁应用程序通常是在iPhone上腾出空间的最有效方法,但是如果您要使用功能齐全的应用程序,则通常花费在20英镑/ 20美元左右。胜于不得不为一部新手机买单。
web测试框架有哪些
Web自动化测试在测试领域里面用得比较多的工具或者框架有Selenium, robotframework, Cucumber等。 Selenium是一个开源的Web自动化测试框架,主要用于做HTM
java获取jsp源码
一、GetURL.java import java.io.*; import java.net.*; public class GetURL { public static void main(S
windows过去同音词
公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 大家好,我是小 G。 如果你这两天有关注 GitHub Trending,应该能注意到,一款名为「
css所有一类元素
这篇想要跟大家分享的是css中的伪类和伪元素,有任何问题可以私聊我或者评论哦! 首先,我们先来想一下 一、引入伪类跟伪元素的原因? 伪类和伪元素的引入是因为在文档树里有些信息无法被充分描述
html设置上下边框大小
目录 理论知识: 示例一:简单边框 示例二:边框和表格 示例三:边框和图片 示例四:边框和文章 理论知识: 边框的写法: border: 边框的宽度 样式 颜色; 边框的四
文字底部对齐的css
css怎么让文字在底部对齐CSS怎么在底部对齐文本,Css将文本在底部对齐:1。将“display:table-cell”设置为包含文本的元素容器;垂直对齐:底部;“风格够;2.使用定位属性位置
123go吃东西大挑战
一、引子 文章结合尚硅谷Go语言教程以及博学谷、等其他资料整理,侵删 原PDF阅读: .
tomcat老是安装不上去
本文开发环境:windos7 , Eclipse-mars , JDK1.7 , Tomcat7.0 本文本是群里的内部资料,不过本着分享的精神,也发出来吧,我相信,这应该是比较详细的一篇文章了。
如何用ftp下载a
本文介绍如何使用 java.net.URLConnection 类从 FTP 服务器下载远程文件,而无需使用第三方库,如 Apache Common
网络与web安全
在Web信息系统高速发展的今天,Web信息系统的各种各样的安全问题已暴漏在我们面前。Web信息系统各种安全问题潜伏在Web系统中,Web系统的时时刻刻遭受各种攻击的安全威胁。这里就跟大家聊聊
怎样确认tomcat的端口
Tomcat端口配置(详细) 目录 一、修改8080端口 1.1 在cmd中查看8080有没有被占用,找出占用8080端口的进程 1.2、接下来可以在任务管理
oracle强制转换数字
-- Start Oracle 为每种数据类型都提供了相应的函数,一般情况下它们之间的相互转换是非常简单的,Oracle 提供的函数有: CAST 将一种类型转成另一种类型 TO_DATE
技术分类
redisreactvuejsapacheiosioscsswindowsapachenodenginxoraclegithtmlandroidiosaspwebftp
推荐文章
• asp-23模具钢定制价格
• html5+规范
• oracle路径变成只读
• css选择除之外
• 当前流行的web技术有哪些
• go进行时态
• android简单开源项目
• 如何配置mysql连接数
• oracle不按表空间导入
• js可以防植物根穿刺吗
• android背景gif
• 皮卡丘go抓什么升级快
用户协议-隐私政策-免责声明-关于我们
版权所有 © 2021 妖怪工作室 粤ICP备2021001854号
链接:
来源:外卖怪