00:00:00.120
all right so let's get started today
00:00:02.700
I'll be talking about Ruby security gems
00:00:08.460
um a quick intro my name is Angela I'm
00:00:11.099
currently residing in Toronto I am
00:00:13.620
actually from New York City and Canada
00:00:15.420
is way too cold for me but I am
00:00:18.359
embracing the winter Vibes out here
00:00:23.160
um and currently I'm a software
00:00:25.439
developer at bite side it's a small
00:00:27.420
custom software shop based out of Ottawa
00:00:30.800
and my interest in the web security
00:00:33.120
actually began during my software
00:00:35.640
engineering boot camp I felt that as a
00:00:38.760
developer there was some kind of like
00:00:40.500
responsibility to protect users this
00:00:42.540
information since I am building an
00:00:44.520
application uh that they will be using
00:00:46.680
and most recently my bank account was
00:00:49.260
almost hacked and since then I've
00:00:51.600
changed my bank account password to be
00:00:53.340
more than 30 characters long just to be
00:00:55.800
extra secure and I've also taken a
00:00:58.379
greater initiative at work implementing
00:01:00.899
security features for web applications
00:01:05.280
all right so let's dive in
00:01:07.500
um so these are the security gems that
00:01:11.159
um the past like several months that
00:01:13.020
I've had an opportunity to research and
00:01:14.820
Implement security gems at work and so
00:01:17.520
I'll be sharing
00:01:18.960
um the gems that have influenced
00:01:20.580
implemented today
00:01:23.100
the first one is lockbox
00:01:25.939
and lockbox allows you to encrypt uh
00:01:30.360
sensitive data at the application Level
00:01:32.520
which is uh crucial for data and
00:01:34.799
security and it's actually
00:01:36.900
um very easy to migrate existing data as
00:01:39.299
well so if you didn't have any
00:01:42.479
um
00:01:43.140
encryption encrypted data at the moment
00:01:45.780
for like a web application you can
00:01:47.880
actually uh migrate it very easily I've
00:01:49.799
done this before
00:01:51.500
and a use case to use a lock box would
00:01:55.079
be to encrypt sensitive data such as
00:01:57.720
personal identifiable information also
00:02:00.540
known as pii such as a customer's
00:02:03.420
address social security number driver's
00:02:06.240
license medical records just very
00:02:08.280
sensitive information that you don't
00:02:09.899
want to be like leaked
00:02:12.860
and however
00:02:15.660
um by no encryption is foolproof and
00:02:19.440
weaknesses can be discovered or
00:02:21.120
exploited by hackers and so hackers
00:02:24.300
can't see the encrypted data unless the
00:02:27.120
encryption key or passphrase is used to
00:02:29.760
decrypt it so if a hacker manages to
00:02:32.700
obtain the encryption key or crack it or
00:02:35.280
crack the encryption algorithm then they
00:02:37.319
can gain access to the data so just by
00:02:40.020
encrypting your database it's not going
00:02:42.300
to be you know safe but it is still very
00:02:45.780
good to encrypt your database I would
00:02:47.940
say and so in addition to encrypting the
00:02:51.480
database it's also just as important to
00:02:54.060
enforce users users to have strong
00:02:56.580
passwords and Implement multi-factor
00:02:59.120
authentication device also has a
00:03:02.340
two-factor gem that you can also easily
00:03:04.440
Implement into your rails application I
00:03:07.500
haven't used this before but I was
00:03:09.540
looking at the documentation and looks
00:03:11.300
not too bad moment
00:03:13.920
I won't be covering this gym but just
00:03:16.080
wanted to let you know that there is a
00:03:18.180
two-factor gym within device
00:03:22.260
okay and if you are using rail 7
00:03:25.800
um there is something called active
00:03:27.000
record encryption which is very similar
00:03:28.980
to what lock box is so you can just
00:03:31.739
um use that instead of lockbox and this
00:03:34.739
will basically encrypt your data at the
00:03:36.540
application Level so you don't have to
00:03:37.920
like install any additional gems which
00:03:39.659
is really nice
00:03:41.159
foreign
00:03:44.060
and for the next few slides I'll be
00:03:47.340
talking about device gems and there are
00:03:50.280
three different
00:03:52.140
um gems basically you can you can add
00:03:54.659
and integrate into your application or
00:03:57.480
projects
00:03:59.040
um and if you are using device it's very
00:04:01.260
easy to integrate integrate these so
00:04:03.780
I'll be talking about custom password
00:04:05.959
trackable and lockable
00:04:10.799
our custom passwords so custom password
00:04:13.920
basically allows you to customize the
00:04:15.959
passwords to have longer characters so
00:04:18.359
at the moment rails password is minimum
00:04:20.639
six characters long there's no
00:04:22.800
restriction no strict requirements on
00:04:25.259
uppercase lowercase numbers or path or
00:04:28.020
symbols so for instance these are some
00:04:30.900
of the acceptable rails passwords like
00:04:32.759
one two three four five six or
00:04:35.479
p-a-s-sw-o or core T Q Wert or a b c d e
00:04:40.020
f one one one one one and actually the
00:04:43.020
word password is exceeding six
00:04:45.240
characters Believe It or Not uh it's
00:04:47.340
going above and beyond the requirements
00:04:48.960
so
00:04:50.100
just something to think about
00:04:52.259
um when your users are creating
00:04:53.699
passwords on Rails
00:04:56.100
and so
00:04:58.259
um a use case of using custom passwords
00:05:00.479
is to enforce a stronger password
00:05:01.979
requirements so that it will help users
00:05:04.620
from getting their accounts hacked so if
00:05:06.720
you see this table here uh the word
00:05:09.720
password will be cracked in less than 10
00:05:12.720
seconds actually the word guest I guess
00:05:14.400
because it's different letters um will
00:05:17.340
take 10 seconds to crack but all of
00:05:19.139
these uh will be able to be cracked in
00:05:22.500
less than one second also if your
00:05:24.419
password is on this list I highly
00:05:26.400
recommend you to change it uh
00:05:29.220
immediately
00:05:32.520
and this is another
00:05:34.860
um chart that I found what's really
00:05:37.560
interesting is that just by enforcing a
00:05:40.500
minimum of 12 characters
00:05:43.320
um let's say with number with numbers
00:05:45.500
uppercase lowercase letters and symbols
00:05:48.600
it's going to take 3 000 years to crack
00:05:51.360
it which is insane
00:05:54.240
um so yeah highly recommend you to
00:05:56.960
increase
00:05:58.520
your password characters for sure very
00:06:01.680
important
00:06:03.180
yeah so rails is like six so it'll be
00:06:06.000
hacked instantly
00:06:08.039
um even with if you add numbers
00:06:10.199
uppercase lowercase letters and symbols
00:06:12.720
so definitely make sure you have a
00:06:14.940
strong password
00:06:19.080
um and the second gem is called
00:06:20.460
trackable and trackable basically allows
00:06:22.979
you to track information about your user
00:06:25.080
sign-in so you can get information such
00:06:27.660
as like the signing account current sign
00:06:30.060
in at last sign in at current sign in IP
00:06:33.300
and last side and IP so basically you
00:06:36.300
can see you can monitor
00:06:38.639
um the login activities for your user
00:06:41.400
and so a use case of this would be like
00:06:44.340
maybe displaying a like log history uh
00:06:47.580
to your users admins or both to monitor
00:06:50.580
any login activities
00:06:52.460
and you can also use paper trail gem to
00:06:55.979
create simple rules to alert some
00:06:58.380
suspicious Behavior maybe there was like
00:07:00.060
a really high transaction
00:07:02.280
um that day or something like that by a
00:07:04.139
user
00:07:05.759
um so for instance like you can
00:07:07.020
Implement something like this like login
00:07:08.460
activities with timestamp uh the device
00:07:11.819
and operating system last sign in
00:07:14.039
address last sign in IP address and
00:07:16.860
current sign-in IP address location and
00:07:19.740
then it tracks the signing account
00:07:26.039
and the other gem is lockable and it
00:07:30.360
locks an account after a specified
00:07:32.400
number of failed sign-in attempts and
00:07:35.460
you can unlock through email or after a
00:07:38.759
specified time
00:07:41.039
and so
00:07:42.720
um you would use this when maybe there's
00:07:45.720
um attempt to log into maybe a user
00:07:48.660
attempts to log into their account with
00:07:50.699
an incorrect password several times so
00:07:53.220
maybe after three or five times of
00:07:55.139
incorrect password attempts account will
00:07:57.479
be locked I feel like this usually
00:07:58.800
appears um on like Bank sites right so
00:08:02.460
you'll usually get this like
00:08:03.660
notifications and your account is locked
00:08:05.819
your account was locked after too many
00:08:07.440
failed login attempts we sent you an
00:08:09.300
email with a link down unlock it
00:08:11.099
something like this you could use
00:08:12.660
blockable for
00:08:13.979
and sadly you'll have to wait and then
00:08:17.039
you know change your password or
00:08:18.780
something like that
00:08:21.360
um and yeah so that is a quick
00:08:24.599
um a quick recap of everything is
00:08:28.020
lockbox you can use to encrypt uh your
00:08:31.319
data
00:08:32.279
and within device there are three gems
00:08:34.740
you can add which is the customized
00:08:36.479
passwords to
00:08:38.159
um make your passwords longer characters
00:08:39.779
longer trackable to track users login
00:08:42.839
activities and lockable uh which you can
00:08:46.620
lock and unlock users