安全RCE之未授权访问分析(8)

2023-05-02 来源:飞速影视
写法二和写法一的区别在于写法一手动实现了方法,而写法二使用函数的形式在其内部通过的转换返回了一个handler处理器,这个handler实现了方法,调用方法则会调用其本身,所以同样也能当做中间件做请求处理。

安全RCE之未授权访问分析


提供两种方式的原因是当存在一个现有的类型需要转换为handler时只需要添加一个方法即可。关于http和中间件更详细的分析就不在这里一一展开了

ruby前置知识


在ruby中当要调用方法时,可以不加括号只使用方法名。实例变量使用@开头表示。
元编程
通过元编程是可以在运行时动态地操作语言结构(如类、模块、实例变量等)
instance_variable_get(var)方法可以取得并返回对象的实例变量var的值。
instance_variable_set(var, val)方法可以将val的值赋值给对象实例变量var并返回该值。
instance_variable_defined(var)方法可以判断对象实例变量var是否定义。
yield 关键字
函数调用时可以传入语句块替换其中的yield关键字并执行。如下示例:
def a return 4enddef b puts yieldendb{a 1}
调用b时会将yield关键字替换为语句块a 1,所以会调用a返回4然后加上1打印5。

安全RCE之未授权访问分析


Web框架rails
路由
在rails中的路由文件一般位于config/routes.rb下,在路由里面可以将请求和处理方法关联起来,交给指定controller里面的action,如下形式:
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号