Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
xiemengjun
@astaxie
高级会员
第 2406 位会员 / 2012-06-04

上海
8 篇帖子 / 89 条回帖
10 关注者
0 正在关注
0 收藏
GitHub Public Repos
  • build-web-application-... 43583

    A golang ebook intro how to build a web with golang

  • go-best-practice 3444

    Trying to complete over 100 projects in various categories in golang.

  • bat 2556

    Go implement CLI, cURL-like tool for humans

  • gopkg 1974

    example for the go pkg's function

  • beego 742

    beego is an open-source, high-performance web framework for the Go programming language.

  • NPWG_zh 580

    Network programming with Go 中文翻译版本

  • godoc 260

    godoc chm pdf

  • weixin 207

    基于beego开发的微信应用

  • goredis 131

    A simple, powerful Redis client for Go

  • bee 54

    Bee is a tool for managing beego framework.

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #150 楼 @ywjno 我没说 sinatra 要用 Go 写,而是作者在用 Go 写一些东西,最近一直在做这方面的研究开发,所以才会出来这样的笑话

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #148 楼 @ywjno 这个对比里面什么都有,sinatra、rails,各种框架,各种语言

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #145 楼 @ywjno 不过给你展示一下,sinatra 的作者最近在写 Go 的代码,https://github.com/bmizerany?tab=repositories 所以我们需要的是拥抱变化,Go 的并发比用 ruby 内部实现的多线程不知道简单多少

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #145 楼 @ywjno 我没说 ruby 一定是性能差,robin 写的文章里面也分析了 rails 存在的问题:总之,无论是 Linkedin 的移动 API 网关还是 Iron.io 的后台任务系统,用 Ruby 来编写,本身并不是问题,实践也有大量案例证明使用 Goliath 或者 Sinatra 编写高性能 Web Service 都是可行的。问题只是在于我们应该:Ruby off rails 了。 http://robbinfan.com/blog/40/ruby-off-rails

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #142 楼 @bhuztez 那些概念啊?我觉得一天应该可以了解基本了啊,你看浩哥写了两篇文章,我觉得你花个一下午应该就可以入门了:http://coolshell.cn/articles/8460.html http://coolshell.cn/articles/8489.html

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #139 楼 @Numbcoder 我没有紧张,也没有态度不好,我一直都是这样直来直去的性格,也许说的过了,但是我觉得激烈的讨论很有帮助啊,我是很欢迎大家一起来挑刺,帮我找出各种问题,因为毕竟靠一个人做框架是做不好的,大家的力量才能做好。所以我很跑到这里来很乐意和大家一起来探讨。

    针对性能对比的话,这个上面的对比性能确实是这样,而且你看我上面提的 iron 的例子,都是 ruby 迁移到 Go 的案例,我觉得没必要修改吧

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #137 楼 @bhuztez 艾玛,Go 这个还算复杂啊

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #132 楼 @debugger 其实是有意义的讨论,我们都是好孩子

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #130 楼 @rasefon 还有我觉得 robbin 的这一篇博客,也详细分析了 ruby 存在问题,我觉得对于 rubyer 来说,应该挺适合的,http://robbinfan.com/blog/40/ruby-off-rails

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #130 楼 @rasefon 下面这些摘抄自《http://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html》 ,然后这一篇详细介绍了为什么设计 Go http://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering。

    Go 中对 C 和 C++ 进行的重要简化的清单:

    • 规范的语法(无需用于解析的符号表)
    • 垃圾收集(唯一)
    • 没有头文件
    • 明确依赖
    • 无循环依赖
    • 常量只能为数字
    • int 和 int32 是不同的类型
    • 字母大小写设定可见性
    • 任何类型都可以有方法(没有类)
    • 没有子类型继承(没有子类)
    • 包级别初始化和定义好的初始化顺序
    • 文件编译到一个包中
    • 包级别的全局表达与顺序无关
    • 没有算数转换(常量做了辅助处理)
    • 隐式的接口实现(无需“implements”定义)
    • 嵌入(没有向父类的升级)
    • 方法如同函数一样进行定义(没有特的别位置要求)
    • 方法就是函数
    • 接口仅仅包含方法(没有数据)
    • 方法仅通过名字匹配(而不是通过类型)
    • 没有构造或者析构方法
    • 后自增和后自减是语句,而不是表达式
    • 没有前自增或前自减
    • 赋值不是表达式
    • 按照赋值、函数调用定义时的顺序执行(没有“sequence point”)
    • 没有指针运算
    • 内存总是零值初始化
    • 对局部变量取地址合法
    • 方法没有“this”
    • 分段的堆栈
    • 没有静态或其他类型注解
    • 没有模板
    • 没有异常
    • 内建 string、slice、map
    • 数组边界检查

    除了这个简化清单和一些未提及的琐碎内容,我相信,Go 相比 C 或者 C++ 是更加有表达力的。少既是多。

  • GO 的性能真的是很惊人啊 at 2013年09月26日

    #128 楼 @rasefon 其实这个帖子也没有和 ruby 对比,但是你真要说和 ruby 对比,那 ruby 完全不能比,ruby 是动态语言,Go 是静态语言,所以不具有对比性,但是你可以了解一下 Go,用来开发 ruby 擅长的 Web 方面,也不输多少。下面这个是 ruby 迁移到 Go 的经典案例:

    Iron.io 从 Ruby 迁移到 Go:减少了 28 台服务器并避免了连锁故障:http://www.infoq.com/cn/news/2013/03/ruby-to-go

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #17 楼 @luikore #42 楼 @gihnius #40 楼 @reus #37 楼 @rasefon #15 楼 @bhuztez

    谢谢各位的讨论,针对大家提出的一些意见,我努力改进了一下目前 beego 的 csrf 的做法

    csrf 在表单中存的是一个随机字符串,cookie 采用了 GetSecureCookie 的方式,如下所示:

    func (c *Controller) XsrfToken() string {
        if c._xsrf_token == "" {
            token, ok := c.GetSecureCookie(XSRFKEY, "_xsrf")
            if !ok {
                expire := 0
                if c.XSRFExpire > 0 {
                    expire = c.XSRFExpire
                } else {
                    expire = XSRFExpire
                }
                token = GetRandomString(15)
                c.SetSecureCookie(XSRFKEY, "_xsrf", token, expire)
            }
            c._xsrf_token = token
        }
        return c._xsrf_token
    }
    

    至于@luikore 提出的 session 需要支持 https 的支持,目前已经增加额外的参数支持

  • 我们不应该为开源项目提供特别支持么?赠送 Ruby Conference VIP 门票如何? at 2013年09月25日

    递交了两个:http://ruby-china.org/topics/14389 http://ruby-china.org/topics/14390

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #120 楼 @luikore 亲,不要这样嘛,讨论讨论还是很有帮助的,至少我知道了 session 需要增加 https 的支持,csrf 里面的 IP 作为认证不可取,其实通过讨论还是学习到很多东西

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #116 楼 @bhuztez uuid 就可以啊

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #115 楼 @cassiuschen 我写了一本开源书,凑合着看看https://github.com/astaxie/build-web-application-with-golang

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #109 楼 @bhuztez 还有目前时间的认证已经有了的

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #109 楼 @bhuztez https://github.com/astaxie/beego/pull/215/files 但是我觉得这个放的位置需要改进,还有一些实现的方式

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #110 楼 @zgm 欢迎大家各种意见啊,这样才能把框架做的更好

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #109 楼 @bhuztez 目前的一个 pull 里面的代码其实已经有认证这一块了,只是这个代码我们还在 review

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #107 楼 @bhuztez 所以在 csrf 里面增加过期时间

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #105 楼 @bhuztez 采用 securitycookie 的话应该不会有很大的问题

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #93 楼 @bhuztez IP 的做法确实有待改进,我打算接下来用 UUID 来做这个认证,但是我还是觉 csrf 放在 cookie 是目前 Go 里面实现比较好的方法,不然引入 session 有点过度

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #61 楼 @luikore 继续驳斥你各种观点:准确点说, 是这个框架没有签名 cookie 支持, 如果用了这个框架, cookie 就应该只用来存 session identifier 和存与用户身份不相干的信息. 使用时如果不知道这一点就很危险. 这一点的危险在哪里?为什么不能存类似 csrf 签名加密的 cookie,你目前的 cookie 存都是怎么做的,签名 cookie 我自己签名过了存不可以嘛?

    另外就是你的 sessionid 不支持 secure (https only) 的设定, 利用 dns 污染进行 session hijack 也是可能的, 不适合用来做电子商务收钱等安全性要求比较高的网站. 这个功能可以加,而且不是那么难的事情,你不用说的好像很严重的 bug 问题。

    如果服务器跑在 nginx 后面, 通过 tcp 连接信息得来的 ip 都是同样的, 如果用户用了代理, 看到的 remote ip 都是同样的. 你不了解 nginx 吧

    按照你的计算方式, 相同 ip, 同一时间的请求, 就会存在 csrf token 撞车的情况. 然后攻击者使用某个流行的 proxy 去访问你的网站来获取一个 token, 那么通过这个 proxy 的用户都有比较大的机会和攻击者的 token 撞车, 攻击者在他的伪造表单里自动更新这个 token 坐等鱼上钩. 你最后就只能寄希望在 nanotime 上了. 双重的 unixNano 能冲突的概率几乎没有,但是你们说的通过 IP 来做 token 认证确实可以改进的更好,例如 uuid 之类的,这一块后期我可以改进

    最后, 因为你没有防止篡改 cookie 的手段, 你的 csrf 不该放 cookie 而应该存在 session store 里 (你的情况就是 文件/数据库/redis/内存了), 或者继续把 csrf 放 cookie 里, 把签名附上也可以. 目前的 cookie 是已经签名加密的,用户篡改的话能通过认证嘛?csrf 不一定非得放 session 就是安全的。

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #100 楼 @bhuztez 新版本我学习学习 #101 楼 @reus 我用 vagrant 装一个去

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #95 楼 @reus 哇,你都用这么新了啊,我的确实没有

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #83 楼 @luikore clang 我没有用过,所以我不评价

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #83 楼 @luikore 麻烦你,gcc 没有-Og 命令,-o2,-o3 我当然是怎么回事,麻烦看看 gcc 的命令啊

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #71 楼 @luikore gcc -Og这是什么命令啊?没听过

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #74 楼 @hooopo unixnano 用了两个是不会碰撞的,XSRFKEY 是用户可以设置的,除非破解了 sha1 算法

  • 上一页
  • 1
  • 2
  • 3
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English