`
idisc
  • 浏览: 36136 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

activerecord安全传递参数的方法

    博客分类:
  • ruby
阅读更多

提示:如有转载请注明作者 小游戏 及出处

 

当我们进行进行activerecord操作时, :conditions使我们最为常用的组合条件表达式的地方,有几种方式可以把外部参数传入其中

1.用#{para}的方式传递参数,但是这种方式最不安全,容易被sql注入攻击

2.conditions值为一数组,数组的第一个元素为模板字符串,用?当占位符,其他元素为实际值,代替前面的占位符,如conditions=>['a=? and b=?', 10, 20]

3.conditions值为一数组,数组的第一个元素为模板字符串,用命名的占位符,占位符的表示方式以:为开始,也就是ruby中的符号类型,第二个元素是个哈希表,要替代的元素都在这里面表示,如果conditions=>['a=:a and b=:b',{:a=>10, :b=>20}]

4.like从句的构造也要遵从上面的原则,不能用?与字符串在模板中构成从句,也就是["a like '?%'", 'ddd']不正确,而[“a like ?”, 'ddd' + '%']是正确的

2
0
分享到:
评论

相关推荐

    享受将SQL注入RubyonRails应用程序的乐趣吧!___下载.zip

    如果开发者直接使用字符串拼接构建SQL查询,而不是利用ActiveRecord的安全方法,那么就可能存在SQL注入的风险。 例如,一个不安全的用户登录功能可能会这样编写: ```ruby def authenticate user = User.find_by...

    mysql php连接类

    - `$this->init($obj)`方法用于初始化类的一些操作,如将样式和JS数组赋值给传递的对象,并调用`selectSeo()`方法。 3. **SEO优化**: 类中提供了两个方法处理SEO优化: - `selectSeo($obj)`方法根据页面编号从`...

    Yii框架参数化查询中IN查询只能查询一个的解决方法

    在Yii的ActiveRecord或CDbCommand类中,我们可以使用query方法来执行SQL语句,并将参数传递给它。例如: ```php $sql = "SELECT id FROM tb WHERE id IN (:ids)"; $db = GeneralService::getSlaveDB(); $result = $...

    jfinal学习手册

    其中,Action是处理请求的核心,getPara系列方法用于获取请求参数,getFile用于文件上传处理,setAttr用于在Controller和View之间传递数据,render系列方法用于返回视图。 3. Interceptor:这部分定义了拦截器的...

    rails学习教程

    Rails提供了许多安全特性,如CSRF防护、XSS防护和参数过滤。了解这些安全措施并合理使用,可以防止常见的Web攻击。 十、部署Rails应用 学习如何将Rails应用部署到生产环境,如Heroku或AWS,是开发过程中必不可少的...

    ThinkPHP新闻发布系统(前台+后台)绝对易学易用

    在ThinkPHP中,你可以使用ActiveRecord模式,通过对象方法直接操作数据。 4. 视图(View):视图主要负责数据的展示,后台管理界面通常包含表格展示、表单输入等元素,可以通过ThinkPHP的模板引擎进行渲染。 三、...

    jfinal手册

    - **setAttr 方法**:设置模型属性,用于传递数据到视图层。 - **render 系列方法**:渲染视图页面的方法。 #### 五、Interceptor 拦截器 - **概述**:拦截器是 AOP 的一种实现方式,在请求处理前和处理后执行...

    TP5.0.5框架源代码

    框架提供了灵活的路由规则定义,支持RESTful API设计,可以方便地映射URL到控制器方法,实现动态路由和参数绑定。 3. **模型操作** 在ThinkPHP5.0.5中,模型(Model)主要用于数据库操作。通过ActiveRecord模式,...

    ThinkPHP3.2.3完全开发手册

    - **模板赋值**:向模板传递数据的方法。 - **模板渲染**:渲染模板并输出结果。 - **获取模板地址**:获取模板文件的路径。 - **获取内容**:从模板中获取内容。 - **模板引擎**:支持多种模板引擎。 #### 调试 - ...

    thinkphp离线手册

    这个手册包含了最新版本的ThinkPHP框架的全部功能和使用方法,旨在帮助开发者在没有网络的情况下也能快速查阅和学习ThinkPHP的相关知识。 ThinkPHP是中国最流行的PHP框架之一,它基于MVC(Model-View-Controller)...

    详解Yii2.0使用AR联表查询实例

    在Yii2.0中,还可以利用request获取URL传递的参数,并以此作为查询条件,从而实现动态的查询结果。 最后,在视图层,视图文件用于将数据展示给用户。在这里,可以使用Yii2.0提供的GridView控件来显示数据表。...

    jfinal_demo

    JFinal的控制器类继承自`Controller`基类,通过`getPara()`、`setAttr()`等方法处理HTTP请求参数和设置返回数据。 4. **路由配置**:JFinal使用约定优于配置的方式,如无特殊需求,只需在`config/config.ini`中简单...

    ThinkPHP3.2.3开发手册

    5. **路由(Routing)**:理解ThinkPHP的路由机制,学习如何自定义路由规则,实现URL重写,以及根据不同的请求类型和参数分配控制器和方法。 6. **数据库操作**:熟悉ThinkPHP的ActiveRecord模式,包括查询构建器的...

    thinkphp of about

    10. **安全防护**:ThinkPHP 提供了防止 SQL 注入、XSS 攻击的安全机制,如自动转义输出、参数过滤等,确保应用的安全性。 11. **缓存管理**:支持多种缓存策略,包括文件缓存、内存缓存(如 Redis、Memcached)等...

    Yii2.0实现的批量更新及批量插入功能示例

    这个方法首先检查传递的条件和参数数组是否为空,然后构造一个动态SQL条件语句,并使用参数绑定的方式防止SQL注入攻击。最后,通过调用`updateAll()`方法完成批量更新操作。 ```php public function ...

    Rails 4 Application Development.pdf

    - **安全辅助方法**:如`params.permit`避免参数篡改。 - **加密与哈希**:使用BCrypt等库对密码进行加密存储。 - **防止CSRF攻击**:自动在表单中添加token验证。 #### 八、Rails 4实战案例分析 本书通过10个激动...

    Ruby on Rails开发指南

    控制器负责获取和验证参数,调用Model进行业务逻辑处理,最后将结果传递给View。 6. ** erb模板**:Rails默认使用ERB(Embedded Ruby)作为视图模板引擎,允许在HTML中嵌入Ruby代码。了解如何在模板中插入变量、...

    Yii使用find findAll查找出指定字段的实现方法

    使用 `params` 数组传递参数是防止SQL注入的好习惯,因为它会自动转义特殊字符。另外,通过限制查询的字段,可以减少数据库查询的负担,提高性能,尤其是在处理大量数据时。 4. **分页查询**: 当需要进行分页时...

    ThinkPHP3.2.2中文开发手册

    手册会讲解如何创建模型类,以及使用ThinkPHP的ActiveRecord模式进行CRUD(创建、读取、更新、删除)操作,还包括关联模型和数据验证等高级用法。 5. **视图(View)** 视图主要负责展示数据。手册将介绍如何创建...

    完整thinkPHP增删改查+分页+模糊查询+Ajax登录+注册

    ThinkPHP提供了内置的分页类`Page`,开发者可以通过传递SQL查询语句、每页显示数量等参数来实现分页效果,同时它还会自动生成前端所需的分页HTML代码。 3. **模糊查询**:模糊查询允许用户输入关键词进行部分匹配...

Global site tag (gtag.js) - Google Analytics