4
A
回答
1
从kernel#eval文档:
与eval(String [,结合[,文件名[,LINENO]]])→OBJ点击展开 源代码
以字符串形式评估Ruby表达式。如果给出绑定,那么 必须是Binding对象,评估在其上下文中执行。 如果存在可选的文件名和lineno参数,则会在报告语法错误时使用 。
但是,正如@andrew-marshall正确指出的那样,如果您使用任何未经验证的输入类型,这是一个巨大的安全漏洞。请参阅Locking Ruby in the Safe作为更多关于受污染数据和$ SAFE等级信息的起点。
3
你可以用某事尝试像
Kernel.const_get("User").send('first')
+1
这仍然需要先解析字符串,所以它没有真正解决OP的问题。 –
相关问题
- 1. 将字符串转换为linq查询
- 2. 将字符串转换为LINQ查询
- 3. 将字符串转换为linq查询
- 4. 如何将字符串列表转换为查询字符串?
- 5. 如何将对象转换为与ActiveRecord查询一起使用的字符串?
- 6. 字符串转换为日期时间使ActiveRecord的数据库查询
- 7. 转换的URL,查询字符串
- 8. 转换的查询字符串数组
- 9. 将gitweb查询字符串转换为cgit查询
- 10. 转换路径查询字符串
- 11. 转换地图来查询字符串
- 12. 转换查询字符串在PHP
- 13. 查询字符串转换%E1到%ufffd
- 14. 将Postgres查询转换为Rails ActiveRecord?
- 15. 将查询从SQL转换为ActiveRecord
- 16. 将sql查询转换为rails activerecord
- 17. 将SQL查询转换为ActiveRecord关系
- 18. 将postgres VARCHAR查询转换为ruby activerecord
- 19. 在SQL查询/ ActiveRecord中转义'@'字符
- 20. 如何将字典转换为Python中的查询字符串?
- 21. 将查询字符串转换为python字典中的requests.post
- 22. 连字符的ActiveRecord查询
- 23. 转换LINQ查询到词典<字符串,字符串[]>
- 24. 查询字符串将空间转换为? (符号)在asp.net
- 25. SQL Server查询(查看)将字符串转换为DateTime
- 26. 将x-www-form-urlencoded查询字符串转换为字典
- 27. 将python字典转换为Solr查询字符串
- 28. 如何为int转换为字符串LINQ查询
- 29. 将字符串转换为int,int转换为字符串
- 30. 字符串转换为字节转换
显而易见的解决方法是使用'eval',但是这会带来整个安全问题。特别是因为它似乎是用户输入 - 是吗? –
所以问题是,它总是“model.classmethod”?以及这个字符串来自哪里?可靠的消息来源?为什么看起来像Ruby代码而不是某种数据结构? – tokland