php过滤非法字符函数
封面图
•
2025-11-21
•
PHP
216
0
0
0
在 PHP 中,过滤非法字符是防止 XSS(跨站脚本攻击)、SQL 注入等安全问题的重要步骤。下面是一些常用的过滤非法字符的函数和方法: --- ## ✅ 1. 使用 `htmlspecialchars()` 函数 用于将 HTML 特殊字符转换为实体,防止 XSS 攻击。 ```php function filter_html($input) { return htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); } ``` ### 示例: ```php $user_input = "<script>alert('XSS');</script>"; $safe_output = filter_html($user_input); echo $safe_output; // 输出: <script>alert('XSS');</script> ``` --- ## ✅ 2. 使用 `filter_var()` 函数 PHP 提供了内置的过滤器功能,可以对输入进行更细粒度的过滤。 ### 示例:过滤电子邮件 ```php $email = "test@example.com"; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Valid email"; } else { echo "Invalid email"; } ``` ### 示例:过滤 URL ```php $url = "https://example.com"; if (filter_var($url, FILTER_VALIDATE_URL)) { echo "Valid URL"; } else { echo "Invalid URL"; } ``` --- ## ✅ 3. 自定义过滤函数(过滤特定非法字符) ```php function filter_special_chars($input) { // 过滤掉常见的非法字符 $filtered = preg_replace('/[^\w\s\-]/', '', $input); return $filtered; } ``` > ⚠️ 注意:这个函数只适用于允许字母、数字、下划线、空格和短横线的情况,具体规则要根据实际需求调整。 --- ## ✅ 4. 防止 SQL 注入(使用预处理语句) 虽然不是“过滤非法字符”,但这是防止 SQL 注入的关键方法。 ```php $stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)"); $stmt->execute([$user_input]); ``` --- ## ✅ 5. 完整的过滤函数示例 ```php function sanitize_input($input) { // 移除 HTML 标签 $input = strip_tags($input); // 转义特殊字符 $input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); // 移除多余空格 $input = trim($input); return $input; } ``` --- ## 📝 小结 | 方法 | 用途 | 是否推荐 | |------|------|----------| | `htmlspecialchars()` | 防止 XSS | ✅ 推荐 | | `filter_var()` | 数据验证 | ✅ 推荐 | | `strip_tags()` | 移除 HTML 标签 | ✅ 推荐 | | 自定义正则过滤 | 灵活控制 | ⚠️ 需谨慎 | | 预处理语句 | 防止 SQL 注入 | ✅ 必须 | --- 如果你有具体的场景(如表单输入、URL、用户评论等),我可以提供更定制化的过滤方案。需要吗?
上一篇:
php list函数
下一篇:
共识算法PoS
标题录入,一次不能超过6条
留言
评论