不转不是中国人!
666 今天晚上就可以用这个来开发一个 asp 的项目!
TIOBE 的排名与其平均工资成反比
本片仅供学习交流使用,严禁用于商业用途,请于 24 小时内删除!
帮顶!大搜车就在我司对面,环境很不错!
有新的公开课吗?我只看过一个很老的,估计是 90 年代的课程。。
"#{user_id.to_s(36)}#{SecureRandom.base58}"[0, 10]
这个肯定能保证唯一性吧,而且 code 也不会被轻易猜测出来
#43 楼 @quakewang 我问大家 Rails 如何方便的做参数校验时,有人觉得我是奇葩,为什么会有这种想法,所以我才举出上面的例子。我并不是说 Rails 有安全性问题,我只是说大家很容易忽略 Get 请求的参数验证,事实上在 Rails 里做请求参数验证就是很不方便,上面已经有人举例子了。
接 #34 楼 @42thcoder 的例子,我再来举一个 Get 请求,不验证参数导致的安全性问题
我曾经见过不少新手都是这么写的
API 的原本意图是是可以按 created_at
或 updated_at
排序来取数据
# PostsController
def index
@posts = Post.order("#{params[:sort]} #{params[:order]}")
end
如果 API 的调用者,故意给 sort
参数传了一个未加索引的字段,或者是一个 text
类型的字段,可以看看你们的数据库还能撑多久
#18 楼 @rei 纯 API 项目和传统的 Web 项相比是有很大区别的,传统 web 项目可以自己控制请求参数,而且可以自己在页面用 JS 等方式验证数据格式。而 API 项目却不同,调用 API 的环境比较复杂,可能是 Web 端、移动端,或者是其他应用程序,这种情况下你就很难保证 API 的使用者在使用 API 时会先对参数进行严格校验,这种情况无论对于安全性还是服务器资源的利用都是不利的
举个最简单的登录的例子
user = User.find_by_email(params[:email])
如果不先对参数 email
进行校验,而实际上它是一个非法的 email 格式,那么这次数据库查询几乎就是浪费。
我说的这种情况在你所强烈推荐的 rubygems.org 项目中到处都是,所以我并不认为它是一个好的可以参考的例子!
关于 API 的设计,我推荐这篇文章 http://mp.weixin.qq.com/s?__biz=MzA3NDM0ODQwMw==&mid=208060670&idx=1&sn=ce67b8896985e8448137052b338093e0&scene=21#wechat_redirect
#15 楼 @jicheng1014 rails 做参数验证大多放到 model 层,这放到 API-Only 的项目可能不太实用,特别是一些 GET 请求。
#5 楼 @jicheng1014 请问用 rails-api 怎么做请求参数的校验?
做项目我会选择 AR,各种插件丰富,遇到问题也容易搜索,migration 也可以脱离 Rails 使用。 写数据脚步什么的,我会用 Sequel,比较直接,感觉用起没有 AR 那么多潜在的规则要求
#4 楼 @night_7th 单 redis 实例 是可以支持多 db 的,但是你们用了中间层,不知道是否支持多 db。二楼的意思是你可以把 sidekiq 的 db 和 session 的 db 分开,这样可以避免 key 的冲突。
#3 楼 @night_7th rpop
是非阻塞命令,当然可以调用,但是对于 sidekiq 来说,把 brpop
改成 rpop
当然有问题,具体你可以看一下二者的区别
1.用同一个 Redis 是没问题的,只要注意 key 别冲突了就行
2.brpop
是对客户端阻塞的,我猜你们公司的分布式 Redis 是用了中间层代理吧,连到 Redis 上的是中间代理层,而客户端是连接到代理层的,所以不太好实现。其实要实现阻塞也是有办法的,比如为阻塞的命令建立特定的连接。
有用!每次升级,我都担心少了什么配置
说实话 Rails 的 Devops 工具还挺完整的,我试过 Docker,感觉反而还不如 mina 来的方便
Rails 5 Beta 3 已经在用了,目前未发现什么问题
王婆卖瓜
👍 腾讯云的 CDN 还能加速国外的资源?
第一眼以为是大众迈腾,准备进来黑的,结果发现是迈思腾