Skip to main content

0xcarnemuerta-security-hub-portfolio

Browser-based security portfolio and technical blog covering AI security, data protection, ML threats, and secure engineering practices

الانتقال إلى التثبيت

معلومات المصدر

المستودع
reason-machines/security-skills
آخر نشاط في المصدر
٣ أغسطس ٢٠٢٦ في ٢٠:٥٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٢
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
0xcarnemuerta-security-hub-portfolio
description
Browser-based security portfolio and technical blog covering AI security, data protection, ML threats, and secure engineering practices
triggers
["set up the 0xcarnemuerta security portfolio locally","how do I customize the security hub portfolio","serve the security portfolio website","modify the AI security blog content","configure the 0xcarnemuerta portfolio site","add new security articles to the portfolio","deploy the security hub to GitHub Pages","update security blog navigation"]
# 0xcarnemuerta Security Hub Portfolio > Skill by [ara.so](https://ara.so) — Security Skills collection. ## Overview The 0xcarnemuerta Security Hub is a static HTML/CSS/JavaScript portfolio website focused on security research, data protection, AI/ML security threats, and secure engineering practices. It serves as both a personal portfolio and a technical blog platform for sharing security insights, particularly around prompt injection, token authentication, and AI-specific attack surfaces. This is a web-based project with no backend dependencies—just static files served through a web server or GitHub Pages. ## Installation Clone the repository and navigate to the project directory: ```bash git clone https://github.com/reedjordanvrb4237/0xcarnemuerta-security-hub.git cd 0xcarnemuerta-security-hub ``` ## Local Development ### Serving the Site Locally Use Python's built-in HTTP server (most common): ```bash python3 -m http.server 8000 ``` Then open `http://localhost:8000/` in your browser. Alternative with Node.js `http-server`: ```bash npx http-server -p 8000 ``` Alternative with PHP: ```bash php -S localhost:8000 ``` ### Directory Structure ``` 0xcarnemuerta-security-hub/ ├── index.html # Main landing page ├── portfolio/ # Portfolio projects ├── blog/ # Technical blog posts ├── assets/ # Images, CSS, JS │ ├── css/ │ ├── js/ │ └── images/ ├── LICENSE └── README.md ``` ## Key Usage Patterns ### Adding a New Blog Post Create a new HTML file in the `blog/` directory: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Prompt Injection Vulnerabilities in LLM Applications - 0xcarnemuerta</title> <link rel="stylesheet" href="../assets/css/style.css"> </head> <body> <header> <nav> <a href="../index.html">Home</a> <a href="../portfolio/">Portfolio</a> <a href="../blog/">Blog</a> </nav> </header> <main> <article> <h1>Prompt Injection Vulnerabilities in LLM Applications</h1> <time datetime="2026-08-03">August 3, 2026</time> <section> <h2>Introduction</h2> <p>Prompt injection represents a critical security concern...</p> </section> <section> <h2>Attack Vectors</h2> <pre><code class="language-python"> # Example vulnerable code user_input = request.form['query'] prompt = f"Translate the following to Spanish: {user_input}" response = llm.complete(prompt) </code></pre> </section> <section> <h2>Mitigation Strategies</h2> <ul> <li>Input sanitization and validation</li> <li>Prompt templates with strict boundaries</li> <li>Output filtering and monitoring</li> </ul> </section> </article> </main> <footer> <p>&copy; 2026 0xcarnemuerta Security Hub</p> </footer> <script src="../assets/js/main.js"></script> </body> </html> ``` ### Adding a Portfolio Project Create a portfolio entry showcasing security work: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Secure ML Pipeline - 0xcarnemuerta Portfolio</title> <link rel="stylesheet" href="../assets/css/style.css"> </head> <body> <header> <nav> <a href="../index.html">Home</a> <a href="../portfolio/">Portfolio</a> <a href="../blog/">Blog</a> </nav> </header> <main> <div class="portfolio-item"> <h1>Secure ML Pipeline Architecture</h1> <div class="project-meta"> <span class="tech-stack">Python | TensorFlow | Kubernetes</span> <span class="date">2026</span> </div> <section class="project-overview"> <h2>Overview</h2> <p>End-to-end secure machine learning pipeline implementing data validation, model versioning, and inference monitoring...</p> </section> <section class="technical-details"> <h2>Security Features</h2> <ul> <li>Encrypted data storage and transmission</li> <li>Model signature verification</li> <li>Access control with JWT tokens</li> <li>Audit logging for all predictions</li> </ul> </section> <section class="code-sample"> <h2>Implementation</h2> <pre><code class="language-python"> import os from cryptography.fernet import Fernet class SecureModelLoader: def __init__(self): self.encryption_key = os.getenv('MODEL_ENCRYPTION_KEY') self.cipher = Fernet(self.encryption_key.encode()) def load_model(self, model_path, signature): """Load and verify encrypted model""" with open(model_path, 'rb') as f: encrypted_data = f.read() # Verify signature before decryption if not self.verify_signature(encrypted_data, signature): raise SecurityError("Model signature verification failed") decrypted_model = self.cipher.decrypt(encrypted_data) return pickle.loads(decrypted_model) </code></pre> </section> <div class="project-links"> <a href="https://github.com/reedjordanvrb4237/secure-ml-pipeline" class="btn">View on GitHub</a> </div> </div> </main> </body> </html> ``` ### Customizing Styling Edit `assets/css/style.css` to modify the site appearance: ```css /* Security-focused dark theme example */ :root { --primary-bg: #0d1117; --secondary-bg: #161b22; --accent-color: #58a6ff; --danger-color: #f85149; --success-color: #3fb950; --text-primary: #c9d1d9; --text-secondary: #8b949e; } body { background-color: var(--primary-bg); color: var(--text-primary); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; margin: 0; padding: 0; } header { background-color: var(--secondary-bg); padding: 1rem 2rem; border-bottom: 1px solid var(--accent-color); } nav a { color: var(--text-primary); text-decoration: none; margin-right: 2rem; transition: color 0.2s; } nav a:hover { color: var(--accent-color); } pre code { background-color: var(--secondary-bg); border-left: 3px solid var(--accent-color); display: block; padding: 1rem; overflow-x: auto; } .vulnerability { border-left: 3px solid var(--danger-color); padding-left: 1rem; margin: 1rem 0; } .mitigation { border-left: 3px solid var(--success-color); padding-left: 1rem; margin: 1rem 0; } ``` ## Configuration ### GitHub Pages Deployment 1. Go to repository Settings → Pages 2. Set Source to "Deploy from a branch" 3. Select branch: `main`, folder: `/ (root)` 4. Save and wait for deployment The site will be available at: `https://reedjordanvrb4237.github.io/0xcarnemuerta-security-hub/` ### Custom Domain (Optional) Add a `CNAME` file to the repository root: ``` security.yourdomain.com ``` Then configure your DNS provider: ``` Type: CNAME Host: security Value: reedjordanvrb4237.github.io ``` ### Navigation Updates Update navigation links across all pages when adding new sections. Create a shared navigation component in `assets/js/main.js`: ```javascript // Dynamic navigation injection document.addEventListener('DOMContentLoaded', function() { const navHTML = ` <nav class="main-nav"> <a href="/index.html">Home</a> <a href="/portfolio/">Portfolio</a> <a href="/blog/">Blog</a> <a href="/resources/">Resources</a> <a href="/contact/">Contact</a> </nav> `; const header = document.querySelector('header'); if (header && !header.querySelector('nav')) { header.innerHTML = navHTML + header.innerHTML; } }); ``` ## Common Patterns ### Security Blog Post Template ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Security analysis and technical discussion"> <title>Article Title - 0xcarnemuerta</title> <link rel="stylesheet" href="../assets/css/style.css"> <link rel="stylesheet" href="../assets/css/prism.css"> </head> <body> <header></header> <main class="blog-post"> <article> <header class="post-header"> <h1>Article Title</h1> <div class="post-meta"> <time datetime="2026-08-03">August 3, 2026</time> <span class="tags"> <a href="/blog/tags/ai-security">AI Security</a> <a href="/blog/tags/prompt-injection">Prompt Injection</a> </span> </div> </header> <div class="post-content"> <!-- Content here --> </div> <footer class="post-footer"> <div class="share-buttons"> <!-- Social sharing --> </div> </footer> </article> </main> <script src="../assets/js/main.js"></script> <script src="../assets/js/prism.js"></script> </body> </html> ``` ### Code Example with Syntax Highlighting Include Prism.js for syntax highlighting: ```html <!-- In <head> --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css"> <!-- Before </body> --> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-python.min.js"></script> <!-- Usage --> <pre><code class="language-python"> import jwt import os from datetime import datetime, timedelta def generate_token(user_id): """Generate secure JWT token""" secret = os.getenv('JWT_SECRET_KEY') payload = { 'user_id': user_id, 'exp': datetime.utcnow() + timedelta(hours=1), 'iat': datetime.utcnow() } return jwt.encode(payload, secret, algorithm='HS256') </code></pre> ``` ### Blog Index Page ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Security Blog - 0xcarnemuerta</title>
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub