<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>利兹</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <icon>https://mengmei.chat/icon.png</icon>
  <id>https://mengmei.chat/</id>
  <link href="https://mengmei.chat/" rel="alternate"/>
  <link href="https://mengmei.chat/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 利兹</rights>
  <subtitle>
    <![CDATA[Security Research & Learning Notes]]>
  </subtitle>
  <title>网络安全学习笔记</title>
  <updated>2026-07-26T16:00:00.000Z</updated>
  <entry>
    <author>
      <name>利兹</name>
    </author>
    <category term="Web安全" scheme="https://mengmei.chat/categories/Web%E5%AE%89%E5%85%A8/"/>
    <category term="Web安全" scheme="https://mengmei.chat/tags/Web%E5%AE%89%E5%85%A8/"/>
    <category term="SQL注入" scheme="https://mengmei.chat/tags/SQL%E6%B3%A8%E5%85%A5/"/>
    <category term="漏洞原理" scheme="https://mengmei.chat/tags/%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86/"/>
    <content>
      <![CDATA[<h2 id="什么是-SQL-注入"><a href="#什么是-SQL-注入" class="headerlink" title="什么是 SQL 注入"></a>什么是 SQL 注入</h2><p>SQL 注入（SQL Injection）是一种代码注入技术，攻击者通过在应用程序的输入字段中插入恶意的 SQL 语句，从而操纵后端数据库执行非预期的操作。</p><h2 id="原理简介"><a href="#原理简介" class="headerlink" title="原理简介"></a>原理简介</h2><p>当 Web 应用程序将用户输入直接拼接到 SQL 查询语句中，而没有进行适当的过滤或参数化处理时，就可能产生 SQL 注入漏洞。</p><h3 id="漏洞代码示例"><a href="#漏洞代码示例" class="headerlink" title="漏洞代码示例"></a>漏洞代码示例</h3><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs php"><span class="hljs-comment">// 危险写法 - 直接拼接用户输入</span><br><span class="hljs-variable">$id</span> = <span class="hljs-variable">$_GET</span>[<span class="hljs-string">&#x27;id&#x27;</span>];<br><span class="hljs-variable">$query</span> = <span class="hljs-string">&quot;SELECT * FROM users WHERE id = <span class="hljs-subst">$id</span>&quot;</span>;<br><span class="hljs-variable">$result</span> = <span class="hljs-title function_ invoke__">mysqli_query</span>(<span class="hljs-variable">$conn</span>, <span class="hljs-variable">$query</span>);<br></code></pre></td></tr></table></figure><h3 id="攻击示例"><a href="#攻击示例" class="headerlink" title="攻击示例"></a>攻击示例</h3><p>假设正常查询为：</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> users <span class="hljs-keyword">WHERE</span> id <span class="hljs-operator">=</span> <span class="hljs-number">1</span>;<br></code></pre></td></tr></table></figure><p>攻击者输入 <code>1 OR 1=1</code>，查询变成：</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> users <span class="hljs-keyword">WHERE</span> id <span class="hljs-operator">=</span> <span class="hljs-number">1</span> <span class="hljs-keyword">OR</span> <span class="hljs-number">1</span><span class="hljs-operator">=</span><span class="hljs-number">1</span>;<br></code></pre></td></tr></table></figure><p>由于 <code>1=1</code> 永远为真，这条语句会返回 users 表中的所有数据。</p><h2 id="SQL-注入分类"><a href="#SQL-注入分类" class="headerlink" title="SQL 注入分类"></a>SQL 注入分类</h2><table><thead><tr><th>类型</th><th>说明</th></tr></thead><tbody><tr><td>数字型注入</td><td>参数未用引号包裹，如 <code>id=1</code></td></tr><tr><td>字符型注入</td><td>参数用引号包裹，如 <code>name=&#39;admin&#39;</code></td></tr><tr><td>联合查询注入</td><td>使用 <code>UNION SELECT</code> 获取其他表数据</td></tr><tr><td>报错注入</td><td>利用数据库报错信息获取数据</td></tr><tr><td>布尔盲注</td><td>根据页面返回的 True&#x2F;False 状态判断</td></tr><tr><td>时间盲注</td><td>利用 <code>SLEEP()</code> 等函数的时间延迟判断</td></tr></tbody></table><h2 id="防御方法"><a href="#防御方法" class="headerlink" title="防御方法"></a>防御方法</h2><h3 id="1-使用参数化查询（推荐）"><a href="#1-使用参数化查询（推荐）" class="headerlink" title="1. 使用参数化查询（推荐）"></a>1. 使用参数化查询（推荐）</h3><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs php"><span class="hljs-comment">// 安全的参数化查询</span><br><span class="hljs-variable">$stmt</span> = <span class="hljs-variable">$conn</span>-&gt;<span class="hljs-title function_ invoke__">prepare</span>(<span class="hljs-string">&quot;SELECT * FROM users WHERE id = ?&quot;</span>);<br><span class="hljs-variable">$stmt</span>-&gt;<span class="hljs-title function_ invoke__">bind_param</span>(<span class="hljs-string">&quot;i&quot;</span>, <span class="hljs-variable">$id</span>);<br><span class="hljs-variable">$stmt</span>-&gt;<span class="hljs-title function_ invoke__">execute</span>();<br></code></pre></td></tr></table></figure><h3 id="2-输入验证与过滤"><a href="#2-输入验证与过滤" class="headerlink" title="2. 输入验证与过滤"></a>2. 输入验证与过滤</h3><ul><li>对用户输入进行严格的类型检查</li><li>使用白名单验证</li><li>转义特殊字符</li></ul><h3 id="3-最小权限原则"><a href="#3-最小权限原则" class="headerlink" title="3. 最小权限原则"></a>3. 最小权限原则</h3><ul><li>数据库账户只授予必要的权限</li><li>避免使用 <code>root</code> 或 <code>sa</code> 等高权限账户连接数据库</li></ul><h2 id="推荐学习资源"><a href="#推荐学习资源" class="headerlink" title="推荐学习资源"></a>推荐学习资源</h2><ul><li><a href="https://owasp.org/www-community/attacks/SQL_Injection">OWASP SQL Injection</a></li><li>PortSwigger Web Security Academy - SQL Injection Labs</li><li>DVWA &#x2F; sqli-labs 靶场练习</li></ul><hr><blockquote><p><strong>免责声明</strong>：本文仅用于学习交流，请勿将文中技术用于非法用途。</p></blockquote>]]>
    </content>
    <id>https://mengmei.chat/2026/07/27/sql-injection-basics/</id>
    <link href="https://mengmei.chat/2026/07/27/sql-injection-basics/"/>
    <published>2026-07-26T16:00:00.000Z</published>
    <summary>SQL注入是Web安全中最经典的漏洞之一，本文记录SQL注入的基本原理和简单示例。</summary>
    <title>SQL注入入门笔记</title>
    <updated>2026-07-26T16:00:00.000Z</updated>
  </entry>
</feed>
