新手站长必看:网站渗透测试基础防护技巧

新手站长必看:网站渗透测试基础防护技巧

最近经常有读者问我:“网站刚上线,就被提示存在安全漏洞,该怎么修?
”其实网站渗透测试基础防护技巧并不复杂,只要掌握几个核心方向,普通站长也能自己动手加固。
今天我就从准备条件开始,手把手带你走一遍防护流程。

动手前需要准备什么

在开始操作前,请确保满足以下条件:

  • 服务器具备管理员权限(SSH登录或宝塔面板等面板权限)
  • 能修改网站根目录下的配置文件(如Nginx的nginx.conf、PHP的php.ini、Apache的.htaccess
  • 准备一个文本编辑器(如Notepad++、VS Code)用于修改代码
  • 如果使用宝塔面板,请提前开启“防火墙”和“安全”插件(免费版即可)

第一道防线:堵住SQL注入漏洞

SQL注入是最常见的攻击方式之一。
攻击者在用户输入中嵌入恶意SQL代码,窃取数据库数据。
最简单的防护方法就是对用户输入进行严格过滤

修改配置文件

如果你使用PHP开发,打开php.ini(一般在/etc/php/版本号/fpm/php.ini),确保以下选项开启:

; 开启魔术引号(PHP 5.4 之前有效,较新版本请使用预处理语句)
magic_quotes_gpc = Off  ; 建议设为Off,用代码层过滤
; 禁用危险的PHP函数
disable_functions = exec,system,passthru,shell_exec,popen,proc_open

代码层防御(以PHP为例)

在接收用户输入的位置(如$_GET['id']),使用强制类型转换或参数化查询:

// 强制转换为整数
$id = (int)$_GET['id'];

// 使用PDO预处理
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([':id' => $id]);

如果你使用WordPress、ThinkPHP等框架,它们已经内置了参数绑定,只需确保使用官方提供的查询方法即可。

第二道防线:过滤XSS跨站脚本

XSS攻击让攻击者在网页中插入恶意JS代码。
最简单有效的措施是对输出内容进行HTML实体转义

通用过滤函数(PHP)

function safe_output($data) {
    return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}
// 输出时调用
echo safe_output($user_input);

使用安全HTTP头

在Nginx配置中添加响应头,防止脚本注入:

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';";

宝塔面板操作路径:网站 -> 设置 -> 配置文件,在server块中粘贴上述指令。
保存后重载Nginx。

第三道防线:拦截恶意文件上传

文件上传漏洞通常是因为未验证文件类型。
以PHP为例,禁止上传phpphtml等可执行脚本:

修改php.ini

; 只允许特定扩展名(需要在代码层面配合)
upload_max_filesize = 10M
; 关闭危险的函数
disable_functions = move_uploaded_file ; 如果不需要上传功能,直接禁用;需要则保留并在代码中验证

Nginx规则拦截

在网站配置文件(宝塔面板:网站 -> 设置 -> 配置文件)中添加:

location ~* \.(php|php5|phtml)$ {
    deny all;  # 禁止直接访问上传目录下的PHP文件
}

location /uploads {
    location ~ \.(jpg|jpeg|png|gif|pdf|zip)$ {  # 只允许安全扩展名
        try_files $uri =404;
    }
    location ~ \.php$ { deny all; }
}

第四道防线:检查并加固弱口令

渗透测试中80%的漏洞源于弱口令。
请立即修改密码:

  • SSH密码:长度不少于12位,包含大小写字母+数字+特殊符号
  • 数据库密码:不要使用admin、123456等常见组合
  • 后台管理员密码:定期更换,不要和邮箱、社交账号相同

宝塔面板操作路径:服务器 -> SSH管理 -> 修改密码;
数据库 -> root密码修改。

常用安全工具快速验证效果

执行完上述步骤后,可以用以下方式验证防护效果:

  1. 简单SQL注入测试:在浏览器地址栏输入 http://你的域名/?id=1' OR '1'='1,如果页面正常显示(而不是报错或显示所有数据),说明你代码里的过滤生效了。
  2. XSS测试:在搜索框输入 ,如果弹窗不出现,说明输出转义生效。
  3. 文件上传测试:尝试上传一个test.php文件,如果提示“不允许上传此类型文件”或被拦截,则防护成功。
  4. 使用在线安全检测工具:如阿里云云安全中心、腾讯云安全体检、或免费的“Quttera Website Scanner”,扫描全站查看报告。

高频问题与避坑提醒

Q:我改完配置后网站打不开了?
A:先检查配置有没有语法错误:执行 nginx -t(Nginx)或 apachectl configtest(Apache)。宝塔用户可在面板中点击“保存”并验证,如果报错会有提示。最常见的是花括号漏掉或引号不匹配。

Q:加了安全头后,网站部分JS功能失效了?
A:这是因为CSP策略太严格。可以将script-src中的'unsafe-inline'改为具体域名(如'self' cdn.example.com),或者使用nonce属性。新手建议先放开'unsafe-inline',等熟悉后再收紧。

Q:我用了编辑器,为什么还有漏洞?
A:很多富文本编辑器允许上传SVG文件,而SVG可以包含脚本。建议在服务器端二次验证文件内容,并关闭SVG上传(除非业务必需)。

写在最后

以上网站渗透测试基础防护技巧虽然基础,但能挡住绝大多数自动扫描攻击。
实际生产环境还需要结合WAF(Web应用防火墙)和定期安全审计。
如果你正在加固自己的网站,建议先按本文步骤完整执行一次,再根据自身业务做微调。
遇到异常异常时优先回看“避坑提醒”,一般都能快速解决。

记住:安全不是一次性工作,而是一种习惯。
每次更新代码或插件后,都顺手检查一下关键配置,就能让网站始终保持在相对安全的状态。

分享到:
上一篇
Redis漏洞利用与安全加固:零基础从配置到实战
下一篇
SQL注入攻击防御详细配置:从零开始保护你的数据库
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意