• 整数安全


    secguide/Go安全指南.md at main · Tencent/secguide · GitHub https://github.com/Tencent/secguide/blob/main/Go%E5%AE%89%E5%85%A8%E6%8C%87%E5%8D%97.md

    1.1.3【必须】整数安全

    • 在进行数字运算操作时,需要做好长度限制,防止外部输入运算导致异常:

      • 确保无符号整数运算时不会反转
      • 确保有符号整数运算时不会出现溢出
      • 确保整型转换时不会出现截断错误
      • 确保整型转换时不会出现符号错误
    • 以下场景必须严格进行长度限制:

      • 作为数组索引
      • 作为对象的长度或者大小
      • 作为数组的边界(如作为循环计数器)
    // bad: 未限制长度,导致整数溢出
    func overflow(numControlByUser int32) {
    	var numInt int32 = 0
    	numInt = numControlByUser + 1
    	// 对长度限制不当,导致整数溢出
    	fmt.Printf("%d\n", numInt)
    	// 使用numInt,可能导致其他错误
    }
    
    func main() {
    	overflow(2147483647)
    }
    
    // good
    func overflow(numControlByUser int32) {
    	var numInt int32 = 0
    	numInt = numControlByUser + 1
    	if numInt < 0 {
    		fmt.Println("integer overflow")
    		return
    	}
    	fmt.Println("integer ok")
    }
    
    func main() {
    	overflow(2147483647)
    }

  • 相关阅读:
    kubernetes部署1.15.0版本
    搭建时间服务器
    创建mysql容器
    制作带sshd功能的centos镜像
    容器操作
    镜像制作
    elk日志系统
    k8s基于canel的网络策略
    k8s的flannel网络插件配置
    k8s搭建WebUI--Dashborad管理界面
  • 原文地址:https://www.cnblogs.com/rsapaper/p/15841740.html
Copyright © 2020-2023  润新知