网站上线后就会被扫描,被扫到漏洞就被打。安全防护不是一次性工作,而是持续的基本功。
先说SQL注入。最常见的攻击方式,黑客通过表单输入拼接SQL语句。防护方法很简单:用参数化查询,干掉字符串拼接。
# PHP防SQL注入写法(PDO参数化查询)
// 错误写法:直接拼接字符串
$sql = "SELECT * FROM users WHERE name='" . $_POST['name'] . "'";
// 正确写法:使用PDO预处理
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");
$stmt->execute([':name' => $_POST['name']]);
$result = $stmt->fetchAll();
再说CC攻击。某个IP频繁请求你的页面,把服务器资源耗尽。Nginx可以限制单IP请求频率。
# Nginx限制单IP请求频率(nginx.conf)
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
# 每秒最多10个请求,突发允许20个
}
}
}
# 封禁恶意User-Agent
if ($http_user_agent ~* "bot|spider|crawler") {
return 403;
}
DDoS防护个人站长很难自己搞,最好的办法是接CDN。Cloudflare免费版就能挡住大部分小规模DDoS。如果被打得很狠,就开CDN的“我被攻击了”模式,所有流量走CDN审查。
另外几个基本操作:后台目录加密码保护、数据库定期备份、程序及时更新打补丁。这些眠得快,别等被打了才想起来。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
