草庐IT

安全标准

全部标签

ruby - 这个示例 tcp 套接字编程事件顺序安全吗?

我计划提供两项服务。用Ruby编写的HTTPREST服务用Go编写的JSONRPC服务Ruby服务将打开一个到GoJSONRPC服务的TCP套接字连接。它将为收到的每个传入HTTP请求执行此操作。它会通过套接字向Go服务发送一些数据,然后该服务会通过套接字发回相应的数据。Go代码Go服务go看起来像这样(简化):srv:=new(service.App)//thiswouldexposeaProcessmethodrpc.Register(srv)listener,err:=net.Listen("tcp",":8080")iferr!=nil{//handleerror}for{co

go - 如何打印通过标准输入引入的行数?

我有以下程序,我想显示从标准输入中出现的特定引入行的次数:packagemainimport("bufio""fmt""os")funcmain(){counts:=make(map[string]int)input:=bufio.NewScanner(os.Stdin)forinput.Scan(){counts[input.Text()]++}//NOTE:ignoringpotentialerrorsfrominput.Err()forline,n:=rangecounts{ifn>1{fmt.Printf("%d\t%s\n",n,line)}}}当我运行该程序时,它允许我输入

json - 在带有 json 文件数据存储的 Golang 应用程序中,直接从客户端接受 json 是不安全的/不好的做法吗?

我有一个简单的Golang应用程序,它带有一个控制应用程序的HTTPAPI,该API有一个由React.js应用程序提供支持的前端。前端允许用户更改设置并将名为settings的json对象直接发布到API/api/settings端点(内置简单的JWT身份验证)。我将该对象解码为应用程序要使用的结构,以防应用程序使用默认结构并向客户端发送错误。我的问题是;我这样做是正确的还是不安全的?将json直接发送到应用程序,无需任何服务器端验证,而是一个简单的json.unmarshal?PS:我来自PHP+MySQL网络应用程序背景,在这种情况下接受数据库的客户端输入而不转义是一件非常危险的

go - 提供标准库 (crypto/tls)

我想对Gocrypto/tls标准库进行一些更改。在vendor文件夹中复制crypto/tls是否是执行此操作的好方法?它几乎可以工作,似乎vendored是我编译应用程序(Caddy网络服务器)时使用的副本。除了一个错误,我得到:go/src/github.com/user/caddy/caddytls/httphandler.go:40:cannotuse"vendor/crypto/tls".Configliteral(type*"vendor/crypto/tls".Config)astype*"crypto/tls".Configinfieldvalue有没有一种方法可以避

go - 任何人都可以提供您自己的/标准的 "clone method"约定,供我/我们引用吗?

我在Golang中找不到“克隆”方法约定,但似乎有必要有一个。我只看到了内置的方法*clonedObj=*obj,但是它太低级了,无法处理(必要时)像这样的深拷贝结构{成员*CompositionObj}我怀疑“func(objClassA)Clone()interface{}”原型(prototype)是否会工作,因为调用obj2:=obj.Clone()会“松散”为ClassA设置的方法,之后需要像obj2.(*ClassA)这样的显式代码。请建议工作方向。 最佳答案 Thisanswer关于map的类似问题建议使用thegob

go - 如何将 HTTP 响应写入标准输出?

我正在尝试将从GET请求收到的原始HTTP响应写入标准输出。我以为httputil.DumpResponse会做我想做的事,但它似乎在“更大”的响应中包含神秘的字节数。例如:HTTP/1.1200OKTransfer-Encoding:chunkedContent-Type:text/plain;charset=utf-8Date:Mon,16Oct201715:07:53GMT1f43THEACTUALBODYCONTENTWHICHIS8003BYTES01f43好像是响应体的长度。Go的http.response谈论预告片,所以0可能是预告片的大小。我的代码是:varresp*h

goji/httpauth - 不能与标准 Golang 'net/http' 库一起使用

代码packagemainimport("fmt""log""net/http""github.com/goji/httpauth")funcrootHandler(whttp.ResponseWriter,r*http.Request){w.Header().Set("Content-Type","text/plain")w.WriteHeader(http.StatusOK)data:="TEST"w.Header().Set("Content-Length",fmt.Sprint(len(data)))fmt.Fprint(w,string(data))}funcmain(){r

linux - 使用 Go 在 Linux 中以编程方式安全地挂载网络位置

在Linux中,我可以像这样使用Go以编程方式挂载网络位置:funcmain(){varuser,passstringfmt.Println("username:")fmt.Scanln(&user)//ignoreerrorsforbrevityfmt.Println("password:")fmt.Scanln(&pass)cmd:=exec.Command("mount","-t","cifs","-o","username="+user+",password="+pass,"//server/dir","media/dir")cmd.Run()}问题:如果不使用sudo提升权限

http - 在请求进行中修改 golang Http Transport 是否安全?

我有一个基于每个请求通过代理轮换的应用程序。目前我有一些代码是:func(mon*Monitor)MassUrlRetrieve(nint,urlstring)(respBytes[]byte){funnel:=make(chan[]byte)goProductRetrieveTimeout(TIMEOUT_RETRIEVE_URL,funnel)fori:=0;i基本上发送多个请求并返回第一个请求以响应/如果没有及时响应则超时。在WrapGetUrlToChannel中,我创建了一个新的代理url,并将其分配给mon的client.tr.Proxy。我的问题是-在请求进行期间修改客户

macos - 安全 : SecKeychainSearchCopyNext Error - Unable to Install Delve on MacOS

我使用以下方法安装了Delve:brewinstalldelve日志显示了一些问题:brewinstallgo-delve/delve/delveUpdatingHomebrew...==>Installingdelvefromgo-delve/delve==>Downloadinghttps://github.com/derekparker/delve/archive/v1.0.0.tar.gzAlreadydownloaded:/Users/user/Library/Caches/Homebrew/delve-1.0.0.tar.gzsecurity:SecKeychainSear