026 黑客喜欢mass assignment

简介:

Hackers Love Mass Assignment

Your site may be at risk! When using mass assignment, you are giving the user complete control over that model and its associations. See how a hacker might use this vulnerability and learn how to stop it in this episode.
 
你的站点或许面临风险!当你使用mass assignment(传递整个model对象属性参数),你会把整个model及其联系的控制权交给用户。看一下hacker如何利用这来攻击你的站点,并且看看如何阻止其发生。
 
---
有一个注册页面,可以提交名字。在User这个model中有两个属性 name和admin,admin是一个boolean型的字段。
在users_controller.rb中,这么定义注册的action
def create
    @user=User.new(params[:user])
    if @user.save
        ...
    else
        ...
    end
end
那么hacker可能通过执行这条语句来直接注册一个admin用户.
curl -d "user[name]=hacker&user[admin]=1" localhost:3000/users
在日志中查看下发生了什么改变:
 
Parameters:{"user"=>{"hacker", "admin"=>"1"}, "action"=>"create", "controller"=>"users"}
 
INSERT INTO users ('name', 'admin') VALUES('hacker', 1)
这样就提交了一个admin的user对象。
 
为了防止这个情况发生,可以在user model里加上
attr_protected :admin
这样就不能从外界提交设置这个字段
在user.rb中,有has_many :comments
 
hacker可以执行这样的命令:
curl -d "user[name]=hacker&user[admin]=1&user[comment_ids][]=1&user[comment_ids][]=2" localhost:3000/users
 
admin=1这个已经无法写入数据库了,但是却把comments改成自己的了
 
用attr_accessible :name
现在就只能用params提交name这一个字段了。




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131840,如需转载请自行联系原作者
目录
相关文章
|
Java 网络架构 容器
面向整洁对象的分层架构COLA 4.0
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“面向整洁对象的分层架构”。 目前COLA已经发展到COLA 4.0。 COLA分为两个部分,COLA架构和COLA组件。
面向整洁对象的分层架构COLA 4.0
|
自然语言处理 Java Go
Fury:一个基于JIT动态编译的高性能多语言原生序列化框架
Fury是一个基于JIT动态编译的多语言原生序列化框架,支持Java/Python/Golang/C++等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。
Fury:一个基于JIT动态编译的高性能多语言原生序列化框架
|
Java API
详细探究Java多线程的线程状态变化
Java多线程的线程状态主要有六种:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)和终止(TERMINATED)。线程创建后处于NEW状态,调用start()后进入RUNNABLE状态,表示准备好运行。当线程获得CPU资源,开始执行run()方法时,它处于运行状态。线程可以因等待锁或调用sleep()等方法进入BLOCKED或等待状态。线程完成任务或发生异常后,会进入TERMINATED状态。
21592 5
|
人工智能 Cloud Native Serverless
2024云栖大会资料精选,《云原生+AI核心技术&最佳实践》PPT全量放送!
关注阿里云云原生公众号,后台回复:2024 云栖大会,即可免费下载云原生云栖大会核心资料合集。
3349 35
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
622 0
|
数据可视化 数据挖掘 BI
数据可视化工具
【5月更文挑战第18天】数据可视化工具
442 7
|
存储 机器学习/深度学习 编解码
计算机视觉的基础概念与入门
之前学习了一下 Python 环境下计算机视觉方面的一些应用(主要是 OpenCV),但是对于计算机视觉方面的种种概念都是一笔带过,计算机视觉是一个很大的领域,在深入它之前 ,有必要对其中的一些基础概念有一个宏观的理解。
|
JavaScript
《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——第3章 MRP简介 3.1 MRP运行的简要说明
本节书摘来自华章计算机《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》一书中的第3章,第3.1节,作者 乐立骏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
4857 0
|
关系型数据库 MySQL 5G
Mysql数据迁移3个快速方法与数据库恢复
Mysql数据迁移3个快速方法与数据库恢复
|
存储 缓存 NoSQL
Springboot中使用redisson + 自定义注解优雅的实现消息的发布订阅
Springboot中使用redisson + 自定义注解优雅的实现消息的发布订阅