Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mongoid-encrypted-fields

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongoid-encrypted-fields

  • 2.0.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

mongoid-encrypted-fields

Build Status Code Climate

New Maintainer Needed

We are actively seeking a new maintainer for this gem! As we no longer use MongoDB as part of our platform, we aren't using the gem for ourselves. As MongoDB and Mongoid continually change, we want to make sure our gem keeps up.

If you're interested, please contact us! Thanks

Description

A library for storing encrypted data in Mongo using Mongoid. We looked at a few alternatives, but wanted something that stored the values securely and unobtrusively.

Mongoid 3 supports custom types that need to only provide a simple interface - allowing us to extend core Ruby types to secure any type while providing a clean interface for developers.

Queries encrypt data before searching the database, so equality matches work automatically.

Prerequisites

  • Mongoid 5+
  • Rails 4+
  • Ruby 2.0+
  • "Bring your own" encryption, see below

Mongoid 3, Mongoid 4 and Rails 3.2 are supported in version 1.x of this gem.

Install

```ruby
gem 'mongoid-encrypted-fields'
```

Usage

  • Configure the cipher to be used for encrypting field values:

    GibberishCipher can be found in examples - uses the Gibberish gem:

    Mongoid::EncryptedFields.cipher = Gibberish.new(ENV['MY_PASSWORD'], ENV['MY_SALT'])
    
  • Use encrypted types for fields in your models:

    class Person
        include Mongoid::Document
    
        field :name, type: String
        field :ssn, type: Mongoid::EncryptedString
    end
    
  • The field getter returns the unencrypted value:

    person = Person.new(ssn: '123456789')
    person.ssn # => '123456789'
    
  • The encrypted value is accessible with the "encrypted" attribute

    person.ssn.encrypted # => <encrypted string>
    
    # It can also be accessed using the hash syntax supported by Mongoid
    person[:ssn] # => <encrypted string>
    
  • Finding a model by an encrypted field works automatically (equality only):

    Person.where(ssn: '123456789').count() # ssn is encrypted before querying the database
    

Known Limitations

  • Single cipher for all encrypted fields
  • Currently can encrypt these Mongoid types
    • Date
    • DateTime
    • Hash
    • String
    • Time
  • The uniqueness validator for encrypted fields should always be set to case-sensitive. Encrypted fields cannot support a case-insensitive match.

(c) 2012 Koan Health. See LICENSE.txt for further details.

FAQs

Package last updated on 02 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc