Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

darnbrokenrails

An attempt at a cybersecurity / code quality teaching tool for Rails.

The 'sqlite3' gem is used to prevent this Rails project being hosted in most major online hosts, but this application is 'insecure by design', so care should be taken when enabling this application in any internet connected computer. Care has been taken to ensure 'broken sections' are not executed but this is not a warranty, it is merely a 'helping hand'. I make no guarantees about code quality or reliability.

Project Goals and Objectives

This repository plus the accompanying documentation can be used for developers wanting to improve their code from a security / quality perspective. The data contained within should not need a 'Computer Science' degree in order to be understood. Your developers and technical management should be able to comprehend the 'nerd talk' within this project without having any issues.

The following goals are the unofficial goals of the project. More goals may be added by contributors.

  1. Violates as many bundler-audit CVEs as possible.
  2. Violates every warning under brakeman whenever possible.
  3. Violates as many suggestions under rails_best_practices as possible.

Tutorials

A tutorial section has been created in the wiki to show how to download this repository, install the tooling and execute the tools and each example within the code should have documentation linking back to the original source so the developers may use the available free tools to further their knowledge and write better Rails software. There is no reason to have insecure / non-functional software in the 21st century, at any level of any company. Any sort of software tools used within this project should be free, open source or have a trial, commercial software will be considered based on price.

Attributions

Inspired by the Damn Vulnerable Linux project, initial implementation by Lazaro Herrera, contributions by you, maybe?

The following contributors helped achieve this project's goals:

  1. Your Name Could Go Here For The Low Cost Of Helping Make Developers Write Safer and Better Code.

Pull Requests and Issues

Pull requests are welcome with any changes, additions, new tooling or just any general feedback. Issues are also welcome; however, build issues will take low priority, since this project's dependencies are just too old to successfully build in some configurations and I don't have the resources to dedicate to fixing build issues at current time.

I will not accept pull requests that fix the security issues. I will accept all pull requests that make this Rails application less secure (proper documentation is required).

Be aware, you may have to manually increase your version of Rails beyond the set 3.2.22.5 in order to use fancy features like generators when making changes to the code.

License

This code is licensed under CC0 with the understanding that you were warned it was not secure and you may credit me and other contributors if you so please.

About

An attempt at a cybersecurity / code quality teaching tool for Rails.

Resources

Stars

45 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages