Cleansing Mongo data

Katherine Cox-Buday katherine.cox-buday at canonical.com
Sat Jun 25 15:30:59 UTC 2016


I didn't understand at first either. The code has a comment[1] with a link providing justification[2].

TLDR: There are 2 issues:

1. Something in our stack juju->mgo->mongo (it hasn't been explained to me what is doing this) rewrites keys which contain dots into new nested structures. E.g.: {foo.bar: baz} -> {foo: {bar: baz}}.
2. Storing keys which begin with $ signs can lead to injection attacks if you're using that data while executing these statements: {$where, mapReduce, group}. This is better explained in [2].

I hope that helps. Please, keep asking questions until this is better understood. It looks like a huge blind-spot for most of our developers.

[1] - https://github.com/juju/juju/blob/master/mongo/utils/data_cleansing.go#L31-L32
[2] - http://docs.mongodb.org/manual/faq/developers/#faq-dollar-sign-escaping

Matthew Williams <matthew.williams at canonical.com> writes:

> I seem to be missing something. Why do we need this?
>
> Matty
>
> On 24 Jun 2016 17:14, "Nate Finch" <nate.finch at canonical.com> wrote:
>
>     It seems as though we should be cleansing all the keys.... since
>     we never know what queries we might want to make in the future. 
>
>     
>     
>     On Fri, Jun 24, 2016 at 12:04 PM Katherine Cox-Buday
>     <katherine.cox-buday at canonical.com> wrote:
>     
>     
>         As I have only just discovered the need to cleanse mongo data,
>         I can't say for sure, but it looks like we may have been
>         cleansing things in the parts of Juju that need it. William
>         may know more.
>         
>         If not, I imagine a small upgrade step would make short work
>         of any problems.
>         
>         roger peppe <roger.peppe at canonical.com> writes:
>         
>         > This is useful, thanks.
>         >
>         > Note that's it's not necessary to cleanse *all* keys that go
>         into Mongo,
>         > just the ones that might be used in queries.
>         >
>         > But one thought... what about keys that already contain
>         full-width
>         > dollar and dot?
>         >
>         > cheers,
>         > rog.
>         >
>         > On 23 June 2016 at 21:09, Katherine Cox-Buday
>         > <katherine.cox-buday at canonical.com> wrote:
>         >> Hey all,
>         >>
>         >> William gave me a good review and it came up that I wasn't
>         cleansing
>         >> some of
>         >> the data being placed in Mongo. I wasn't aware this had to
>         be done,
>         >> and
>         >> after talking to a few other folks it became apparent that
>         maybe not
>         >> many
>         >> people know we should be doing this.
>         >>
>         >> At any rate, William also pointed me to some existing code
>         which did
>         >> this.
>         >> I've pulled it out into the mongo/utils package for general
>         >> consumption. The
>         >> comments do a pretty good job of elucidating why this is
>         necessary.
>         >>
>         >>
>         https://github.com/juju/juju/blob/master/mongo/utils/data_cleansing.go
>        
>         >>
>         >> -
>         >> Katherine
>         >>
>         >> --
>         >> Juju-dev mailing list
>         >> Juju-dev at lists.ubuntu.com
>         >> Modify settings or unsubscribe at:
>         >> https://lists.ubuntu.com/mailman/listinfo/juju-dev
>         >>
>         
>         --
>         Katherine
>         
>         --
>         Juju-dev mailing list
>         Juju-dev at lists.ubuntu.com
>         Modify settings or unsubscribe at:
>         https://lists.ubuntu.com/mailman/listinfo/juju-dev
>         
>
>     --
>     Juju-dev mailing list
>     Juju-dev at lists.ubuntu.com
>     Modify settings or unsubscribe at:
>     https://lists.ubuntu.com/mailman/listinfo/juju-dev
>     
>     
>
>

-- 
Katherine



More information about the Juju-dev mailing list