lanrion / weixin_rails_middleware

微信集成 ruby weixin_rails_middleware for integration weixin.
MIT License
408 stars 107 forks source link

token 值 不直接暴露在微信服务器链接中 #3

Closed lanrion closed 10 years ago

lanrion commented 10 years ago

不安全。

ghost commented 10 years ago

尝试使用MD5token值加密

  get  'weixin/:encrypted_weixin_token', to: 'weixin#index'
  post 'weixin/:encrypted_weixin_token', to: 'weixin#reply'

缺点是要在Model里保存MD5值

lanrion commented 10 years ago

@turristan 一个是由开发者指定secret(自动生成到配置文件也可),通过这个sceret来做“混合”加密,这个是最简单的做法。另外一种可以考虑 "id+created_at+weixin_token" md5加密,同样,也是需要保存到库里,麻烦。第三种方法就是加密后的值,直接保存到用户配置的"token_column"内,页面上再解密显示。 你觉得哪种合适?

ghost commented 10 years ago

snapshot5

暴露在url中暴露token, 风险是程序可能被人盗用。

既然腾讯有一定的验证机制, 所以我们只要不暴露token就行了。 简单(到无脑)的方法是, Model 数据结构改成(rails g model WeiXinConfiguration secret token),将来还要加 app_keyapp_secret的。config 将 token_column 改成 secret_column。

  get  'weixin/:secret', to: 'weixin#index'
  post 'weixin/:secret', to: 'weixin#reply'

使用token_string也类似。 觉得加密并不是必须的。

lanrion commented 10 years ago

Fixed it in v1.1.0 version: https://github.com/lanrion/weixin_rails_middleware/tree/v1.1.0 .