SPEAKER 1: And I'm just wondering, what are of the typical conventions
to basic security management for doing development or doing
post development for managing apps, or what should I
even do trying to get into network security or cyber security,
or with Python, or like if I have some analytic skills with Python,
and so on and so forth, what should I study and stuff like that?
SPEAKER 2: Sure.
Why don't I answer the first part, and then
turn the latter part over to Brian.
So if you are live streaming your code and with it your secret keys
on the internet, don't.
That is bad.
You answered the questions yourself already.
If you recall-- if you've taken CS50 or CS50 Web,
you might recall that anytime we dealt with secrets, like API keys,
we would encourage you to put them into what are called environment
variables, which put them into the computer's memory,
but in a place where it's not in your code, which
means people on the internet can't see it if you're live streaming.
And you don't accidentally therefore push it to GitHub
or save it in your code repository, if you're using version control.
So generally speaking, anything you put in your code
really shouldn't be that sensitive.
You should not have passwords, not secret keys or the like.
Use some other mechanism for those.
As for Python itself and security practices and learning more,
Brian, do you want to take it from there?
SPEAKER 3: Yeah, I mean, certainly if you're interested in learning more
about security, the domain I'd suggest looking into
is the whole world of cryptography, which
is this very sort of vast discipline within computer
science all about trying to communicate things securely,
which is becoming very, very necessary in the context of the internet,
where you want to be able to send messages to someone
across the internet, but you want to do so securely,
so that nobody in the middle is going to be
able to access whatever information you're trying to send them.
And there are a whole bunch of now algorithms and libraries
that exist in languages like Python that might be worth exploring there.
And this kind of cryptography is the basis
for how communication over the internet works.
It's the basis for how cryptocurrencies like Bitcoin work,
if you're familiar with or have heard of those.
So a lot of applications now have these cryptographic techniques.
And we talk about these a little bit in CS50 in the web programming class,
but definitely a lot more there to explore too.