ARM|Golang 1.17,新功能介绍( 四 )
net/http用户可以通过使用AllowQuerySemicolons处理程序包装 。 它也不会触发ErrorLog日志记录警告 。
注意 , 接受分号作为查询分隔符可能会导致安全问题 。
TLS严格ALPN当设置Config.NextProtos时 , 服务器现在强制协调配置协议和客户端建议的ALPN 协议 。如果有没有相互支持的协议 , 连接会被关闭 。 根据RFC 7301的要求会触发no_application_protocol告警 , 这可以缓解ALPACA 跨协议攻击。
作为一个例外 , 当在服务器的 Config.NextProtos包含\"h2\"值时 HTTP/1.1客户端不支持的ALPN将被允许连接 。
其他库改变archive/zip
增加新方法File.OpenRaw Writer.CreateRaw Writer.Copy , 关注运行性能时候可以使用 。
compress/lzw
NewReader函数保证返回一个新的值类型Reader NewWriter保证返回一个新的值类型Writer. 这些新类型都实现了Reset方法 ( Reader.Reset Writer.Reset) 允许重用Reader或者Writer 。
crypto/ed25519
crypto/ed25519包已被重写 , 所有amd64和arm64上的操作都提高两倍 。
crypto/elliptic
CurveParams方法现在自动调用更快更安全的专用已知曲线(P-224、P-256 和 P-521)的实现 。
注意 , 这是一种尽力而为的方法和应用程序应该避免使用泛型 , 而费常量时间 CurveParams方法 , 而是使用专用的Curv实现如P256.
P521曲线实现已使用由生成的代码重写fiat加密项目 , 它基于经过形式验证的算术模型操作 。 现在支持amd64 和arm 64 。
crypto/rand
crypto/rand包现在macOS 上使用getentropy的系统调用 , 在Solaris、Illumos 和DragonFlyBSD系统中使用getrandom系统调用 。
crypto/tls
新的Conn.HandshakeContext方法允许用户控制正在进行的的取消TLS握手 。提供的上下文可以通过新的回调从各种回调访问ClientHelloInfo.Context和 CertificateRequestInfo.Context方法 。 握手完成后取消上下文无效 。
密码套件订购现在完全由crypto/tls打包 。 目前 , 密码套件是基于排序的考虑到其安全性、性能和硬件支持本地和对等方的硬件
Config.CipherSuites 字段现在被忽略 , 使用Config.PreferServerCipherSuites字段 。 注意 Config.CipherSuites仍然允许 应用程序选择要启用的TLS 1.0-1.2密码套件 。
3DES密码套件已移至InsecureCipherSuites 。 它们仍然默认启用 , 但只是作为最后的备用方法 。
从下一个版本 Go 1.18 开始 , Config.MinVersion为crypto/tls客户端将默认使用TLS 1.2 , 禁用TLS 1.0和TLS 1.1 。 应用程序将能够覆盖更改明确设置 Config.MinVersion 。 但是不影响crypto/tls服务器 。
crypto/x509
CreateCertificate如果提供的私钥不匹配父公钥 , 会返回错误 。 生成的证书将失败验证 。
临时的 GODEBUG=x509ignoreCN=0标志已被移除 。
ParseCertificate被重写 , 现在消耗的资源减少了约70% 。 除了错误消息外 , 行为没有改变 。
在BSD系统上 , /etc/ssl/certs现在搜索受信任根 。 这增加了对新系统可信证书存储的支持 FreeBSD 12.2+ 。
从下一个版本Go 1.18 开始 , crypto/x509将拒绝使用SHA-1哈希函数签名的证书 。 但是不会限制自签名根证书 。
database/sql
如果io.Close接口connector字段中的类型实现 , DB.Close方法现在关闭 。
新的NullInt16和NullByte结构表示可能为空的int16和字节值 。这些可以用作目的地Scan方法 , 类似于NullString 。
debug/elf
添加了SHT_MIPS_ABIFLAGS常量 。
encoding/binary
binary.Uvarint只读10字节以避免浪费的计算 。 如果超过10 bytes需要 , 返回的字节数是 -11.
在读取错误编码的varint 时 , 以前的Go版本可能会返回更大的负数 。
encoding/csv
新的Reader.FieldPos方法返回对应于开始的行和列最近返回的记录中的给定字段Read.
encoding/xml
当评论出现在Directive , 现在被替换使用单个空格而不是完全省略 。
相关经验推荐
- 华为|华为、清华携手,2022年OpenHarmony接入太空,击碎美国星链阴谋
- harmonyos|蓝牙耳机哪款比较好,适合寒假游戏放松的几款蓝牙耳机
- 高通骁龙|华硕、TCL推出Win 11 ARM笔记本,搭载高通骁龙芯片
- 摄像头|华为Mate 50和HarmonyOS 3.0将于6月推出
- 龙芯|微信力挺国产芯片、国产系统,已支持ARM、X86、龙芯三大指令集
- AMD|NVIDIA斥资400亿收购ARM失败,而AMD 350亿收购赛灵思要成
- 苹果|华为公布新海思芯片,全新架构CPU加持,不再受ARM“控制”
- harmonyos|又有超120款机型全面升鸿蒙OS正式版!
- harmonyos|天玑9000正式发布!红米K50宇宙首批搭载,CPU性能已超新骁龙8?
- ARM|ARM要一统天下?华为已掘了它的后路
