diff --git a/curriculum/challenges/english/09-information-security/information-security-projects/anonymous-message-board.md b/curriculum/challenges/english/09-information-security/information-security-projects/anonymous-message-board.md index fc060f4510e..c6934924ce7 100644 --- a/curriculum/challenges/english/09-information-security/information-security-projects/anonymous-message-board.md +++ b/curriculum/challenges/english/09-information-security/information-security-projects/anonymous-message-board.md @@ -13,17 +13,9 @@ Build a full stack JavaScript app that is functionally similar to this: this GitHub repo and complete your project locally. -- Use our Replit starter project to complete your project. +- Use our Gitpod starter project to complete your project. - Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. -If you use Replit, follow these steps to set up the project: - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the Solution Link field. Optionally, also submit a link to your project's source code in the GitHub Link field. - # --instructions-- 1. Set `NODE_ENV` to test without quotes when ready to write tests and DB to your databases connection string (in `.env`) diff --git a/curriculum/challenges/english/09-information-security/information-security-projects/port-scanner.md b/curriculum/challenges/english/09-information-security/information-security-projects/port-scanner.md index 32a7ef2e06c..e03eac4e1b1 100644 --- a/curriculum/challenges/english/09-information-security/information-security-projects/port-scanner.md +++ b/curriculum/challenges/english/09-information-security/information-security-projects/port-scanner.md @@ -9,12 +9,7 @@ dashedName: port-scanner # --description-- -You will be working on this project with our Replit starter code. - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - +You will be working on this project with our Gitpod starter code. We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project: @@ -75,11 +70,11 @@ If the IP address passed into the `get_open_ports` function is invalid, the func ## Development -Write your code in `port_scanner.py`. For development, you can use `main.py` to test your code. Click the "run" button and `main.py` will run. +Write your code in `port_scanner.py`. For development, you can use `main.py` to test your code. ## Testing -The unit tests for this project are in `test_module.py`. We imported the tests from `test_module.py` to `main.py` for your convenience. The tests will run automatically whenever you hit the "run" button. +The unit tests for this project are in `test_module.py`. We imported the tests from `test_module.py` to `main.py` for your convenience. ## Submitting diff --git a/curriculum/challenges/english/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md b/curriculum/challenges/english/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md index e0be1176a5b..1615304aae6 100644 --- a/curriculum/challenges/english/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md +++ b/curriculum/challenges/english/09-information-security/information-security-projects/secure-real-time-multiplayer-game.md @@ -11,17 +11,9 @@ dashedName: secure-real-time-multiplayer-game Develop a 2D real time multiplayer game using the HTML Canvas API and Socket.io that is functionally similar to this: https://secure-real-time-multiplayer-game.freecodecamp.rocks/. Working on this project will involve you writing your code using one of the following methods: - Clone this GitHub repo and complete your project locally. -- Use our Replit starter project to complete your project. +- Use our Gitpod starter project to complete your project. - Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. -If you use Replit, follow these steps to set up the project: - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the Solution Link field. Optionally, also submit a link to your project's source code in the GitHub Link field. - # --instructions-- Create a secure multiplayer game in which each player can move their avatar, there is at least one collectible item, and the rank of the players is calculated based on their score. diff --git a/curriculum/challenges/english/09-information-security/information-security-projects/sha-1-password-cracker.md b/curriculum/challenges/english/09-information-security/information-security-projects/sha-1-password-cracker.md index e20e0878522..c83af02a718 100644 --- a/curriculum/challenges/english/09-information-security/information-security-projects/sha-1-password-cracker.md +++ b/curriculum/challenges/english/09-information-security/information-security-projects/sha-1-password-cracker.md @@ -9,12 +9,7 @@ dashedName: sha-1-password-cracker # --description-- -You will be working on this project with our Replit starter code. - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - +You will be working on this project with our Gitpod starter code. We are still developing the interactive instructional part of the Python curriculum. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete this project: @@ -52,11 +47,11 @@ The `hashlib` library has been imported for you. You should consider using it in ## Development -Write your code in `password_cracker.py`. For development, you can use `main.py` to test your code. Click the "run" button and `main.py` will run. +Write your code in `password_cracker.py`. For development, you can use `main.py` to test your code. ## Testing -The unit tests for this project are in `test_module.py`. We imported the tests from `test_module.py` to `main.py` for your convenience. The tests will run automatically whenever you hit the "run" button. +The unit tests for this project are in `test_module.py`. We imported the tests from `test_module.py` to `main.py` for your convenience. ## Submitting diff --git a/curriculum/challenges/english/09-information-security/information-security-projects/stock-price-checker.md b/curriculum/challenges/english/09-information-security/information-security-projects/stock-price-checker.md index c5d05a7dee4..78b00c79071 100644 --- a/curriculum/challenges/english/09-information-security/information-security-projects/stock-price-checker.md +++ b/curriculum/challenges/english/09-information-security/information-security-projects/stock-price-checker.md @@ -15,17 +15,9 @@ Since all reliable stock price APIs require an API key, we've built a workaround Working on this project will involve you writing your code using one of the following methods: - Clone this GitHub repo and complete your project locally. -- Use our Replit starter project to complete your project. +- Use our Gitpod starter project to complete your project. - Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. -If you use Replit, follow these steps to set up the project: - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the Solution Link field. Optionally, also submit a link to your project's source code in the GitHub Link field. - # --instructions-- 1. SET `NODE_ENV` to `test` without quotes and set `DB` to your MongoDB connection string diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md index 451cbd98349..af1063f5cfa 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.md @@ -8,13 +8,13 @@ dashedName: ask-browsers-to-access-your-site-via-https-only-with-helmet-hsts # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. HTTP Strict Transport Security (HSTS) is a web security policy which helps to protect websites against protocol downgrade attacks and cookie hijacking. If your website can be accessed via HTTPS you can ask user’s browsers to avoid using insecure HTTP. By setting the header Strict-Transport-Security, you tell the browsers to use HTTPS for the future requests in a specified amount of time. This will work for the requests coming after the initial request. # --instructions-- -Configure `helmet.hsts()` to use HTTPS for the next 90 days. Pass the config object `{maxAge: timeInSeconds, force: true}`. You can create a variable `ninetyDaysInSeconds = 90*24*60*60;` to use for the `timeInSeconds`. Replit already has hsts enabled. To override its settings you need to set the field "force" to true in the config object. We will intercept and restore the Replit header, after inspecting it for testing. +Configure `helmet.hsts()` to use HTTPS for the next 90 days. Pass the config object `{maxAge: timeInSeconds, force: true}`. You can create a variable `ninetyDaysInSeconds = 90*24*60*60;` to use for the `timeInSeconds`. Gitpod already has hsts enabled. To override its settings you need to set the field "force" to true in the config object. We will intercept and restore the Gitpod header, after inspecting it for testing. Note: Configuring HTTPS on a custom website requires the acquisition of a domain, and an SSL/TLS Certificate. diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md index 1c8b0a039da..86fcb78b579 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.md @@ -8,7 +8,7 @@ dashedName: avoid-inferring-the-response-mime-type-with-helmet-nosniff # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. Browsers can use content or MIME sniffing to override the `Content-Type` header of a response to guess and process the data using an implicit content type. While this can be convenient in some scenarios, it can also lead to some dangerous attacks. This middleware sets the `X-Content-Type-Options` header to `nosniff`, instructing the browser to not bypass the provided `Content-Type`. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. Browsers can use content or MIME sniffing to override the `Content-Type` header of a response to guess and process the data using an implicit content type. While this can be convenient in some scenarios, it can also lead to some dangerous attacks. This middleware sets the `X-Content-Type-Options` header to `nosniff`, instructing the browser to not bypass the provided `Content-Type`. # --instructions-- diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md index df5a2738dbb..39aaceac679 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.md @@ -8,7 +8,7 @@ dashedName: configure-helmet-using-the-parent-helmet-middleware # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. `app.use(helmet())` will automatically include all the middleware introduced above, except `noCache()`, and `contentSecurityPolicy()`, but these can be enabled if necessary. You can also disable or configure any other middleware individually, using a configuration object. diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md index e41d8a3d310..75025477f2f 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.md @@ -8,7 +8,7 @@ dashedName: disable-client-side-caching-with-helmet-nocache # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. If you are releasing an update for your website, and you want the users to always download the newer version, you can (try to) disable caching on client’s browser. It can be useful in development too. Caching has performance benefits, which you will lose, so only use this option when there is a real need. diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md index ec268aa846c..47974dcd3f7 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.md @@ -8,7 +8,7 @@ dashedName: disable-dns-prefetching-with-helmet-dnsprefetchcontrol # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. To improve performance, most browsers prefetch DNS records for the links in a page. In that way the destination ip is already known when the user clicks on a link. This may lead to over-use of the DNS service (if you own a big website, visited by millions people…), privacy issues (one eavesdropper could infer that you are on a certain page), or page statistics alteration (some links may appear visited even if they are not). If you have high security needs you can disable DNS prefetching, at the cost of a performance penalty. diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md index 4e8a41c6586..1071f5245c8 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.md @@ -8,7 +8,7 @@ dashedName: hash-and-compare-passwords-asynchronously # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. As hashing is designed to be computationally intensive, it is recommended to do so asynchronously on your server as to avoid blocking incoming connections while you hash. All you have to do to hash a password asynchronous is call diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md index 64fc17c3a70..73d20f0469b 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.md @@ -8,7 +8,7 @@ dashedName: hash-and-compare-passwords-synchronously # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. Hashing synchronously is just as easy to do but can cause lag if using it server side with a high cost or with hashing done very often. Hashing with this method is as easy as calling diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md index c1cd789591e..05ccdf872a9 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.md @@ -8,7 +8,7 @@ dashedName: hide-potentially-dangerous-information-using-helmet-hidepoweredby # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. Hackers can exploit known vulnerabilities in Express/Node if they see that your site is powered by Express. `X-Powered-By: Express` is sent in every request coming from Express by default. Use the `helmet.hidePoweredBy()` middleware to remove the X-Powered-By header. diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md index 53a4ac70f07..672b9bc101c 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/install-and-require-helmet.md @@ -11,17 +11,9 @@ dashedName: install-and-require-helmet Working on these challenges will involve you writing your code using one of the following methods: - Clone this GitHub repo and complete these challenges locally. -- Use our Replit starter project to complete these challenges. +- Use our Gitpod starter project to complete these challenges. - Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. -If you use Replit, follow these steps to set up the project: - -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. - -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the Solution Link field. - Helmet helps you secure your Express apps by setting various HTTP headers. # --instructions-- diff --git a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md index 5c9c9d7b740..bb6e0fd22d7 100644 --- a/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md +++ b/curriculum/challenges/english/09-information-security/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.md @@ -8,7 +8,7 @@ dashedName: mitigate-the-risk-of-clickjacking-with-helmet-frameguard # --description-- -As a reminder, this project is being built upon the following starter project on Replit, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Gitpod, or cloned from GitHub. Your page could be put in a `` or `