我有一个对象,我想抓住java中的内容。 唯一的问题是,目前是红宝石。如何在java中解组ruby对象?
irb(main):050:0> blah
=> "BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg%253D%253D-\
-0cdecf4edfaa5cbe4693c9fb83b204c1256a54a6"
irb(main):049:0> Marshal.load(Base64.decode64(blah))
=> {"authentication_strategies"=>nil, "user"=>1}
我得到了base64部分 - 所以现在一切都是以字节为单位。我将如何访问第二个字符串?我认为jruby可以做些事情,但我从未使用过,也不知道从哪里开始。
让我详细说明我的问题。
1)这些都是我想在Apache
2)我不打算将它们存储在数据库中Tomcat上的servlet和Merb的应用程序之间共享的cookie。我曾考虑过在memcached中使用它们,但由于其他原因我想将它们存储为cookie(是的,我很清楚涉及的安全影响)
我目前正在查看jruby的红桥/ jruby-嵌入,但是因为这只是70字节,所以我需要看看,我认为把所有这些开销都变得如此简单是很荒谬的。
,而不是启动一个新的问题....代码,我现在看起来像这样:
// using commons
Base64 b64 = new Base64();
byte[] decoded = b64.decode(cookie.getValue().getBytes());
ScriptingContainer container = new ScriptingContainer();
container.runScriptlet("la = Marshal.load(\"" + decoded + "\"); puts la.to_s;");
显然,这是行不通的原因元帅是要检查前2个字节的解码和怪胎,因为它不匹配jruby的主要/次要版本.... hrmss ..
我可能是错的,但是如果cookie中包含ruby代码,这会不会导致注入漏洞?我知道这个话题很古老,但我想我会把它扔到那里。 – jgrowl 2013-05-09 03:46:43