From e168d574ff79b6b997ca93d39bf3ad36b2dacf1e Mon Sep 17 00:00:00 2001 From: Alex Mueller Date: Fri, 8 May 2020 16:25:32 -0400 Subject: [PATCH] and i think i'm done --- final-project/.editorconfig | 10 + final-project/.gitattributes | 194 +++ final-project/.gitignore | 3 + final-project/.htaccess | 1218 +++++++++++++++++ final-project/404.html | 62 + final-project/LICENSE.txt | 19 + final-project/browserconfig.xml | 12 + final-project/css/main.css | 265 ++++ final-project/css/main.min.css | 1 + final-project/css/normalize.css | 349 +++++ final-project/css/normalize.min.css | 1 + final-project/css/style.css | 277 ++++ final-project/css/style.css.map | 1 + final-project/css/style.min.css | 1 + final-project/css/style.min.css.map | 1 + final-project/css/style.sass | 205 +++ final-project/doc/TOC.md | 34 + final-project/doc/css.md | 49 + final-project/doc/extend.md | 639 +++++++++ final-project/doc/faq.md | 40 + final-project/doc/html.md | 205 +++ final-project/doc/js.md | 36 + final-project/doc/misc.md | 173 +++ final-project/doc/usage.md | 130 ++ final-project/favicon.ico | Bin 0 -> 766 bytes final-project/humans.txt | 15 + final-project/icon.png | Bin 0 -> 4029 bytes final-project/img/.gitignore | 0 final-project/img/clients.webp | Bin 0 -> 19140 bytes final-project/img/dog.webp | Bin 0 -> 42508 bytes final-project/img/dog2.webp | Bin 0 -> 37882 bytes final-project/img/dribbble_S.webp | Bin 0 -> 592 bytes final-project/img/facebook_S.webp | Bin 0 -> 266 bytes final-project/img/feature1.webp | Bin 0 -> 2224 bytes final-project/img/feature2.webp | Bin 0 -> 2238 bytes final-project/img/feature3.webp | Bin 0 -> 2060 bytes final-project/img/googleplus_S.webp | Bin 0 -> 432 bytes final-project/img/hero.webp | Bin 0 -> 42216 bytes final-project/img/mac-window.webp | Bin 0 -> 3066 bytes final-project/img/partner-logo-1.webp | Bin 0 -> 4408 bytes final-project/img/partner-logo-4.webp | Bin 0 -> 2004 bytes final-project/img/partner-logo-5.webp | Bin 0 -> 6110 bytes final-project/img/partner-logo-7.webp | Bin 0 -> 3564 bytes final-project/img/partner-logo-8.webp | Bin 0 -> 4106 bytes final-project/img/png/clients.png | Bin 0 -> 354482 bytes final-project/img/png/dog.png | Bin 0 -> 573589 bytes final-project/img/png/dog2.png | Bin 0 -> 424269 bytes final-project/img/png/dribbble_S.png | Bin 0 -> 1283 bytes final-project/img/png/facebook_S.png | Bin 0 -> 491 bytes final-project/img/png/feature1.png | Bin 0 -> 4660 bytes final-project/img/png/feature2.png | Bin 0 -> 5219 bytes final-project/img/png/feature3.png | Bin 0 -> 4973 bytes final-project/img/png/googleplus_S.png | Bin 0 -> 1016 bytes final-project/img/png/hero.png | Bin 0 -> 661946 bytes final-project/img/png/mac-window.png | Bin 0 -> 9416 bytes final-project/img/png/partner-logo-1.png | Bin 0 -> 11138 bytes final-project/img/png/partner-logo-4.png | Bin 0 -> 9061 bytes final-project/img/png/partner-logo-5.png | Bin 0 -> 16844 bytes final-project/img/png/partner-logo-7.png | Bin 0 -> 10883 bytes final-project/img/png/partner-logo-8.png | Bin 0 -> 13033 bytes final-project/img/png/send.png | Bin 0 -> 540 bytes final-project/img/png/twitter_S.png | Bin 0 -> 804 bytes final-project/img/send.webp | Bin 0 -> 344 bytes final-project/img/twitter_S.webp | Bin 0 -> 396 bytes final-project/index.html | 238 ++++ final-project/js/main.js | 0 final-project/js/plugins.js | 24 + final-project/js/vendor/jquery-3.4.1.min.js | 2 + .../js/vendor/modernizr-3.8.0.min.js | 3 + final-project/robots.txt | 5 + final-project/site.webmanifest | 12 + final-project/tile-wide.png | Bin 0 -> 1854 bytes final-project/tile.png | Bin 0 -> 3482 bytes 73 files changed, 4224 insertions(+) create mode 100644 final-project/.editorconfig create mode 100644 final-project/.gitattributes create mode 100644 final-project/.gitignore create mode 100644 final-project/.htaccess create mode 100644 final-project/404.html create mode 100644 final-project/LICENSE.txt create mode 100644 final-project/browserconfig.xml create mode 100644 final-project/css/main.css create mode 100644 final-project/css/main.min.css create mode 100644 final-project/css/normalize.css create mode 100644 final-project/css/normalize.min.css create mode 100644 final-project/css/style.css create mode 100644 final-project/css/style.css.map create mode 100644 final-project/css/style.min.css create mode 100644 final-project/css/style.min.css.map create mode 100644 final-project/css/style.sass create mode 100644 final-project/doc/TOC.md create mode 100644 final-project/doc/css.md create mode 100644 final-project/doc/extend.md create mode 100644 final-project/doc/faq.md create mode 100644 final-project/doc/html.md create mode 100644 final-project/doc/js.md create mode 100644 final-project/doc/misc.md create mode 100644 final-project/doc/usage.md create mode 100644 final-project/favicon.ico create mode 100644 final-project/humans.txt create mode 100644 final-project/icon.png create mode 100644 final-project/img/.gitignore create mode 100644 final-project/img/clients.webp create mode 100644 final-project/img/dog.webp create mode 100644 final-project/img/dog2.webp create mode 100644 final-project/img/dribbble_S.webp create mode 100644 final-project/img/facebook_S.webp create mode 100644 final-project/img/feature1.webp create mode 100644 final-project/img/feature2.webp create mode 100644 final-project/img/feature3.webp create mode 100644 final-project/img/googleplus_S.webp create mode 100644 final-project/img/hero.webp create mode 100644 final-project/img/mac-window.webp create mode 100644 final-project/img/partner-logo-1.webp create mode 100644 final-project/img/partner-logo-4.webp create mode 100644 final-project/img/partner-logo-5.webp create mode 100644 final-project/img/partner-logo-7.webp create mode 100644 final-project/img/partner-logo-8.webp create mode 100644 final-project/img/png/clients.png create mode 100644 final-project/img/png/dog.png create mode 100644 final-project/img/png/dog2.png create mode 100644 final-project/img/png/dribbble_S.png create mode 100644 final-project/img/png/facebook_S.png create mode 100644 final-project/img/png/feature1.png create mode 100644 final-project/img/png/feature2.png create mode 100644 final-project/img/png/feature3.png create mode 100644 final-project/img/png/googleplus_S.png create mode 100644 final-project/img/png/hero.png create mode 100644 final-project/img/png/mac-window.png create mode 100644 final-project/img/png/partner-logo-1.png create mode 100644 final-project/img/png/partner-logo-4.png create mode 100644 final-project/img/png/partner-logo-5.png create mode 100644 final-project/img/png/partner-logo-7.png create mode 100644 final-project/img/png/partner-logo-8.png create mode 100644 final-project/img/png/send.png create mode 100644 final-project/img/png/twitter_S.png create mode 100644 final-project/img/send.webp create mode 100644 final-project/img/twitter_S.webp create mode 100644 final-project/index.html create mode 100644 final-project/js/main.js create mode 100644 final-project/js/plugins.js create mode 100644 final-project/js/vendor/jquery-3.4.1.min.js create mode 100644 final-project/js/vendor/modernizr-3.8.0.min.js create mode 100644 final-project/robots.txt create mode 100644 final-project/site.webmanifest create mode 100644 final-project/tile-wide.png create mode 100644 final-project/tile.png diff --git a/final-project/.editorconfig b/final-project/.editorconfig new file mode 100644 index 0000000..6cee539 --- /dev/null +++ b/final-project/.editorconfig @@ -0,0 +1,10 @@ +# editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/final-project/.gitattributes b/final-project/.gitattributes new file mode 100644 index 0000000..c664a90 --- /dev/null +++ b/final-project/.gitattributes @@ -0,0 +1,194 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +## SOURCE CODE +*.bat text eol=crlf +*.coffee text +*.css text +*.htm text +*.html text +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.od text +*.onlydata text +*.php text +*.pl text +*.py text +*.rb text +*.sass text +*.scm text +*.scss text +*.sh text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text + +## DOCKER +*.dockerignore text +Dockerfile text + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## TEMPLATES +*.dot text +*.ejs text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.njk text +*.phtml text +*.tmpl text +*.tpl text +*.twig text + +## LINTERS +.babelrc text +.csslintrc text +.eslintrc text +.htmlhintrc text +.jscsrc text +.jshintrc text +.jshintignore text +.prettierrc text +.stylelintrc text + +## CONFIGS +*.bowerrc text +*.cnf text +*.conf text +*.config text +.browserslistrc text +.editorconfig text +.gitattributes text +.gitconfig text +.gitignore text +.htaccess text +*.npmignore text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text + +## HEROKU +Procfile text +.slugignore text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +## AUDIO +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +## VIDEO +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.ogv binary +*.swc binary +*.swf binary +*.webm binary + +## ARCHIVES +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +## FONTS +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +## EXECUTABLES +*.exe binary +*.pyc binary diff --git a/final-project/.gitignore b/final-project/.gitignore new file mode 100644 index 0000000..ef8f3b1 --- /dev/null +++ b/final-project/.gitignore @@ -0,0 +1,3 @@ +# Include your project-specific ignores in this file +# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files +# Useful .gitignore templates: https://github.com/github/gitignore diff --git a/final-project/.htaccess b/final-project/.htaccess new file mode 100644 index 0000000..2a2bacf --- /dev/null +++ b/final-project/.htaccess @@ -0,0 +1,1218 @@ +# Apache Server Configs v3.2.1 | MIT License +# https://github.com/h5bp/server-configs-apache + +# (!) Using `.htaccess` files slows down Apache, therefore, if you have +# access to the main server configuration file (which is usually called +# `httpd.conf`), you should add this logic there. +# +# https://httpd.apache.org/docs/current/howto/htaccess.html + +# ###################################################################### +# # CROSS-ORIGIN # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Cross-origin requests | +# ---------------------------------------------------------------------- + +# Allow cross-origin requests. +# +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS +# https://enable-cors.org/ +# https://www.w3.org/TR/cors/ + +# +# Header set Access-Control-Allow-Origin "*" +# + +# ---------------------------------------------------------------------- +# | Cross-origin images | +# ---------------------------------------------------------------------- + +# Send the CORS header for images when browsers request it. +# +# https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image +# https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html + + + + + SetEnvIf Origin ":" IS_CORS + Header set Access-Control-Allow-Origin "*" env=IS_CORS + + + + +# ---------------------------------------------------------------------- +# | Cross-origin web fonts | +# ---------------------------------------------------------------------- + +# Allow cross-origin access to web fonts. +# +# https://developers.google.com/fonts/docs/troubleshooting + + + + Header set Access-Control-Allow-Origin "*" + + + +# ---------------------------------------------------------------------- +# | Cross-origin resource timing | +# ---------------------------------------------------------------------- + +# Allow cross-origin access to the timing information for all resources. +# +# If a resource isn't served with a `Timing-Allow-Origin` header that +# would allow its timing information to be shared with the document, +# some of the attributes of the `PerformanceResourceTiming` object will +# be set to zero. +# +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Timing-Allow-Origin +# https://www.w3.org/TR/resource-timing/ +# https://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ + +# +# Header set Timing-Allow-Origin: "*" +# + +# ###################################################################### +# # ERRORS # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Custom error messages/pages | +# ---------------------------------------------------------------------- + +# Customize what Apache returns to the client in case of an error. +# +# https://httpd.apache.org/docs/current/mod/core.html#errordocument + +ErrorDocument 404 /404.html + +# ---------------------------------------------------------------------- +# | Error prevention | +# ---------------------------------------------------------------------- + +# Disable the pattern matching based on filenames. +# +# This setting prevents Apache from returning a 404 error as the result +# of a rewrite when the directory with the same name does not exist. +# +# https://httpd.apache.org/docs/current/content-negotiation.html#multiviews + +Options -MultiViews + +# ###################################################################### +# # INTERNET EXPLORER # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Document modes | +# ---------------------------------------------------------------------- + +# Force Internet Explorer 8/9/10 to render pages in the highest mode +# available in the various cases when it may not. +# +# https://hsivonen.fi/doctype/#ie8 +# +# (!) Starting with Internet Explorer 11, document modes are deprecated. +# If your business still relies on older web apps and services that were +# designed for older versions of Internet Explorer, you might want to +# consider enabling `Enterprise Mode` throughout your company. +# +# https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode +# https://blogs.msdn.microsoft.com/ie/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11/ +# https://msdn.microsoft.com/en-us/library/ff955275.aspx + + + Header set X-UA-Compatible "IE=edge" "expr=%{CONTENT_TYPE} =~ m#text/html#i" + + +# ###################################################################### +# # MEDIA TYPES AND CHARACTER ENCODINGS # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Media types | +# ---------------------------------------------------------------------- + +# Serve resources with the proper media types (f.k.a. MIME types). +# +# https://www.iana.org/assignments/media-types/media-types.xhtml +# https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype + + + + # Data interchange + + AddType application/atom+xml atom + AddType application/json json map topojson + AddType application/ld+json jsonld + AddType application/rss+xml rss + AddType application/geo+json geojson + AddType application/rdf+xml rdf + AddType application/xml xml + + + # JavaScript + + # Servers should use text/javascript for JavaScript resources. + # https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages + + AddType text/javascript js mjs + + + # Manifest files + + AddType application/manifest+json webmanifest + AddType application/x-web-app-manifest+json webapp + AddType text/cache-manifest appcache + + + # Media files + + AddType audio/mp4 f4a f4b m4a + AddType audio/ogg oga ogg opus + AddType image/bmp bmp + AddType image/svg+xml svg svgz + AddType image/webp webp + AddType video/mp4 f4v f4p m4v mp4 + AddType video/ogg ogv + AddType video/webm webm + AddType video/x-flv flv + + # Serving `.ico` image files with a different media type + # prevents Internet Explorer from displaying them as images: + # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee + + AddType image/x-icon cur ico + + + # WebAssembly + + AddType application/wasm wasm + + + # Web fonts + + AddType font/woff woff + AddType font/woff2 woff2 + AddType application/vnd.ms-fontobject eot + AddType font/ttf ttf + AddType font/collection ttc + AddType font/otf otf + + + # Other + + AddType application/octet-stream safariextz + AddType application/x-bb-appworld bbaw + AddType application/x-chrome-extension crx + AddType application/x-opera-extension oex + AddType application/x-xpinstall xpi + AddType text/calendar ics + AddType text/markdown markdown md + AddType text/vcard vcard vcf + AddType text/vnd.rim.location.xloc xloc + AddType text/vtt vtt + AddType text/x-component htc + + + +# ---------------------------------------------------------------------- +# | Character encodings | +# ---------------------------------------------------------------------- + +# Serve all resources labeled as `text/html` or `text/plain` +# with the media type `charset` parameter set to `UTF-8`. +# +# https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset + +AddDefaultCharset utf-8 + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +# Serve the following file types with the media type `charset` +# parameter set to `UTF-8`. +# +# https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset + + + AddCharset utf-8 .appcache \ + .bbaw \ + .css \ + .htc \ + .ics \ + .js \ + .json \ + .manifest \ + .map \ + .markdown \ + .md \ + .mjs \ + .topojson \ + .vtt \ + .vcard \ + .vcf \ + .webmanifest \ + .xloc + + +# ###################################################################### +# # REWRITES # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Rewrite engine | +# ---------------------------------------------------------------------- + +# (1) Turn on the rewrite engine (this is necessary in order for +# the `RewriteRule` directives to work). +# +# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine +# +# (2) Enable the `FollowSymLinks` option if it isn't already. +# +# https://httpd.apache.org/docs/current/mod/core.html#options +# +# (3) If your web host doesn't allow the `FollowSymlinks` option, +# you need to comment it out or remove it, and then uncomment +# the `Options +SymLinksIfOwnerMatch` line (4), but be aware +# of the performance impact. +# +# https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks +# +# (4) Some cloud hosting services will require you set `RewriteBase`. +# +# https://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site +# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase +# +# (5) Depending on how your server is set up, you may also need to +# use the `RewriteOptions` directive to enable some options for +# the rewrite engine. +# +# https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions +# +# (6) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the +# appropriate schema automatically (http or https). + + + + # (1) + RewriteEngine On + + # (2) + Options +FollowSymlinks + + # (3) + # Options +SymLinksIfOwnerMatch + + # (4) + # RewriteBase / + + # (5) + # RewriteOptions + + # (6) + RewriteCond %{HTTPS} =on + RewriteRule ^ - [env=proto:https] + RewriteCond %{HTTPS} !=on + RewriteRule ^ - [env=proto:http] + + + +# ---------------------------------------------------------------------- +# | Forcing `https://` | +# ---------------------------------------------------------------------- + +# Redirect from the `http://` to the `https://` version of the URL. +# +# https://wiki.apache.org/httpd/RewriteHTTPToHTTPS + +# (1) If you're using cPanel AutoSSL or the Let's Encrypt webroot +# method it will fail to validate the certificate if validation +# requests are redirected to HTTPS. Turn on the condition(s) +# you need. +# +# https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml +# https://tools.ietf.org/html/draft-ietf-acme-acme-12 + +# +# RewriteEngine On +# RewriteCond %{HTTPS} !=on +# # (1) +# # RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/ +# # RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[\w-]+$ +# # RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ +# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] +# + +# ---------------------------------------------------------------------- +# | Suppressing the `www.` at the beginning of URLs | +# ---------------------------------------------------------------------- + +# Rewrite www.example.com → example.com + +# The same content should never be available under two different +# URLs, especially not with and without `www.` at the beginning. +# This can cause SEO problems (duplicate content), and therefore, +# you should choose one of the alternatives and redirect the other +# one. +# +# (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! + +# (1) The rule assumes by default that both HTTP and HTTPS +# environments are available for redirection. +# If your SSL certificate could not handle one of the domains +# used during redirection, you should turn the condition on. +# +# https://github.com/h5bp/server-configs-apache/issues/52 + + + RewriteEngine On + # (1) + # RewriteCond %{HTTPS} !=on + RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L] + + +# ---------------------------------------------------------------------- +# | Forcing the `www.` at the beginning of URLs | +# ---------------------------------------------------------------------- + +# Rewrite example.com → www.example.com + +# The same content should never be available under two different +# URLs, especially not with and without `www.` at the beginning. +# This can cause SEO problems (duplicate content), and therefore, +# you should choose one of the alternatives and redirect the other +# one. +# +# (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! + +# (1) The rule assumes by default that both HTTP and HTTPS +# environments are available for redirection. +# If your SSL certificate could not handle one of the domains +# used during redirection, you should turn the condition on. +# +# https://github.com/h5bp/server-configs-apache/issues/52 + +# Be aware that the following might not be a good idea if you use "real" +# subdomains for certain parts of your website. + +# +# RewriteEngine On +# # (1) +# # RewriteCond %{HTTPS} !=on +# RewriteCond %{HTTP_HOST} !^www\. [NC] +# RewriteCond %{SERVER_ADDR} !=127.0.0.1 +# RewriteCond %{SERVER_ADDR} !=::1 +# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] +# + +# ###################################################################### +# # SECURITY # +# ###################################################################### + +# ---------------------------------------------------------------------- +# | Clickjacking | +# ---------------------------------------------------------------------- + +# Protect website against clickjacking. +# +# The example below sends the `X-Frame-Options` response header with +# the value `DENY`, informing browsers not to display the content of +# the web page in any frame. +# +# This might not be the best setting for everyone. You should read +# about the other two possible values the `X-Frame-Options` header +# field can have: `SAMEORIGIN` and `ALLOW-FROM`. +# https://tools.ietf.org/html/rfc7034#section-2.1. +# +# Keep in mind that while you could send the `X-Frame-Options` header +# for all of your website’s pages, this has the potential downside that +# it forbids even non-malicious framing of your content (e.g.: when +# users visit your website using a Google Image Search results page). +# +# Nonetheless, you should ensure that you send the `X-Frame-Options` +# header for all pages that allow a user to make a state changing +# operation (e.g: pages that contain one-click purchase links, checkout +# or bank-transfer confirmation pages, pages that make permanent +# configuration changes, etc.). +# +# Sending the `X-Frame-Options` header can also protect your website +# against more than just clickjacking attacks: +# https://cure53.de/xfo-clickjacking.pdf. +# +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options +# https://tools.ietf.org/html/rfc7034 +# https://blogs.msdn.microsoft.com/ieinternals/2010/03/30/combating-clickjacking-with-x-frame-options/ +# https://www.owasp.org/index.php/Clickjacking + +# +# Header set X-Frame-Options "DENY" "expr=%{CONTENT_TYPE} =~ m#text/html#i" +# + +# ---------------------------------------------------------------------- +# | Content Security Policy (CSP) | +# ---------------------------------------------------------------------- + +# Mitigate the risk of cross-site scripting and other content-injection +# attacks. +# +# This can be done by setting a `Content Security Policy` which +# whitelists trusted sources of content for your website. +# +# There is no policy that fits all websites, you will have to modify +# the `Content-Security-Policy` directives in the example below depending +# on your needs. +# +# The example policy below aims to: +# +# (1) Restrict all fetches by default to the origin of the current website +# by setting the `default-src` directive to `'self'` - which acts as a +# fallback to all "Fetch directives" (https://developer.mozilla.org/en-US/docs/Glossary/Fetch_directive). +# +# This is convenient as you do not have to specify all Fetch directives +# that apply to your site, for example: +# `connect-src 'self'; font-src 'self'; script-src 'self'; style-src 'self'`, etc. +# +# This restriction also means that you must explicitly define from +# which site(s) your website is allowed to load resources from. +# +# (2) The `` element is not allowed on the website. This is to +# prevent attackers from changing the locations of resources loaded +# from relative URLs. +# +# If you want to use the `` element, then `base-uri 'self'` +# can be used instead. +# +# (3) Form submissions are only allowed from the current website by +# setting: `form-action 'self'`. +# +# (4) Prevents all websites (including your own) from embedding your +# webpages within e.g. the `