当前位置: 首页 > news >正文

PHPWeb安全通用防护策略

PHPWeb安全通用防护策略

Web安全是开发的基础。从输入验证到输出转义,每一步都关系到应用的安全。今天说说PHP中基础的Web安全防护。

防止路径遍历。

```php
function safeFilePath(string $baseDir, string $path): string
{
$baseDir = realpath(rtrim($baseDir, '/'));
$fullPath = realpath($baseDir . '/' . $path);

if ($fullPath === false || !str_starts_with($fullPath, $baseDir)) {
throw new RuntimeException("无效的文件路径");
}

return $fullPath;
}

try {
$path = safeFilePath('/var/www/uploads', $_GET['file']);
readfile($path);
} catch (RuntimeException $e) {
echo "文件访问被拒绝";
}
?>

防止HTTP响应头注入。

```php
$location = filter_var($_GET['redirect'] ?? '', FILTER_SANITIZE_URL);
if (filter_var($location, FILTER_VALIDATE_URL)) {
header("Location: $location");
}

// 安全地设置头信息
function safeHeader(string $name, string $value): void
{
$name = str_replace(["\r", "\n"], '', $name);
$value = str_replace(["\r", "\n"], '', $value);
header("$name: $value");
}
?>

文件包含防护。

```php
// 不安全
include $_GET['page'] . '.php';

// 安全
$allowedPages = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';
if (!in_array($page, $allowedPages)) $page = 'home';
include __DIR__ . '/pages/' . $page . '.php';
?>

反序列化防护。

```php
// 不安全
$data = unserialize($_POST['data']);

// 安全
function safeUnserialize(string $data, array $allowedClasses = []): mixed
{
return unserialize($data, ['allowed_classes' => $allowedClasses]);
}

$data = safeUnserialize($_POST['data'], [User::class]);
?>

安全响应头。

```php
header('X-Frame-Options: DENY');
header('X-Content-Type-Options: nosniff');
header('X-XSS-Protection: 1; mode=block');
header('Referrer-Policy: strict-origin-when-cross-origin');
header("Content-Security-Policy: default-src 'self'");
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
?>

输入验证的基本原则。

```php
// 验证邮箱
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) die("无效的邮箱");

// 验证整数范围
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT, ['options' => ['min_range' => 1, 'max_range' => 150]]);
if ($age === false) die("无效的年龄");

// 验证URL
$url = filter_var($_POST['url'], FILTER_VALIDATE_URL);
if ($url === false) die("无效的URL");
?>

Web安全的几个基本原则。不要信任用户输入,输出到HTML要转义,敏感信息加密存储,关键操作验证权限和token。把这几条牢牢记住了,大部分安全漏洞都能避免。

http://www.zskr.cn/news/1473156.html

相关文章:

  • 2026 东莞奢侈品全品类避坑攻略,6 家门店行情实测,一站式变现指南 - 薛定谔的梨花猫
  • ArchivePasswordTestTool:免费开源的压缩包密码恢复终极指南
  • HarmonyOS分布式开发实战:跨设备亲子涂鸦应用架构与实现
  • 2026年ESD防静电闸机厂家推荐:苏州捷德全系产品助力智能制造安全管控 - 品牌推荐官
  • 2026杭州新中式别墅灯光设计要点:从光线层次到柜体发光,这些细节藏着空间的气质 - 十大品牌排行榜
  • Speechless:3分钟学会微博PDF备份,永久保存你的社交记忆
  • 北京东卫靳双权律师:18年深耕房产继承纠纷,专业化解遗嘱继承复杂案件 - 品牌推荐官
  • 终极简单!N_m3u8DL-CLI-SimpleG:五分钟搞定M3U8视频下载的完整指南
  • ai辅助开发新体验:在快马平台用对话代替pycharm编码,自动生成数据分析脚本
  • 如何永久保存微信聊天记录:免费开源工具WeChatExporter完整使用指南
  • 2026年品牌设计服务推荐:福州定未文化传播有限公司品牌全案设计实力解析 - 品牌推荐官
  • Windows attrib命令详解:从文件属性管理到工程自动化实战
  • 告别迷茫!ISE 14.7 完整设计流程保姆级指南:从VHDL代码到FPGA烧录
  • 2026年三乙醇胺采购推荐:河南万山新材料科技85%/97%/99%全规格供应 - 品牌推荐官
  • 成都明德管理咨询公司推荐:人力资源诊断/体系/外包等全系服务深耕成都市场 - 品牌推荐官
  • 3分钟掌握抖音无水印下载:批量自动化工具完全指南
  • 2026年婚姻法律服务推荐:沈辉律师专注婚姻咨询/离婚财产分割等业务15年 - 品牌推荐官
  • 杭州2026轻法式别墅,这些材质搭配要记牢 - 十大品牌排行榜
  • 从零到一:基于快马ai生成pycharm数据分析实战项目骨架
  • 别再一个个改了!用MathType 7.x批量处理Word公式的完整避坑指南
  • Twitter推文采集的三大陷阱:方法、挑战与风险
  • 2026杭州小美式大平层,收纳布局到底该怎么拆解 - 十大品牌排行榜
  • RT-Thread嵌入式开发实战:从内核原理到组件应用与物联网开发
  • 思源宋体TTF:免费开源中文字体的完整使用指南
  • AI建站避坑指南:10个用户最关心的问题与答案
  • 如何快速掌握N_m3u8DL-CLI-SimpleG:面向初学者的完整M3U8视频下载指南
  • 短视频怎么在线去水印?2026 实测解析方法汇总及法律问题清单 - 科技热点发布
  • PyTorch时空预测代码包:含ConvLSTM等主流模型、patch分块工具与即插即用训练模板
  • 从Verilog到SystemVerilog:为什么logic能一统江湖?聊聊wire和reg的‘前世今生’
  • 技术深度解析:OpenCore Legacy Patcher的架构设计与硬件兼容性突破