跳转到主要内容
你行网

Main navigation

  • 首页
  • Drupal
  • 编程与开发
  • 数据库
  • 操作系统与应用
  • 服务器与运维
  • 社区
User account menu
  • 登录

面包屑

  1. 首页

转义用户输入的特殊字符有哪些函数

由 hrs, 3 三月, 2025

在 PHP 中,为了防止安全漏洞(如 SQL 注入、XSS 攻击等),通常需要对用户输入的特殊字符进行转义。以下是常用的转义函数及其用途:

1. HTML 转义
用于防止 XSS(跨站脚本攻击),将特殊字符转换为 HTML 实体。

函数:htmlspecialchars
作用: 将特殊字符转换为 HTML 实体。

常用字符:

& → &

< → &lt;

> → &gt;

" → &quot;

' → &#039;(如果设置了 ENT_QUOTES 标志)

语法:

php
复制
htmlspecialchars(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, string $encoding = "UTF-8", bool $double_encode = true): string
示例:

php
复制
$input = '<script>alert("XSS");</script>';
echo htmlspecialchars($input);
输出:

复制
&lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt;
函数:htmlentities
作用: 将所有可转换为 HTML 实体的字符都进行转换(比 htmlspecialchars 更全面)。

示例:

php
复制
$input = '<script>alert("XSS");</script>';
echo htmlentities($input);
输出:

复制
&lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt;
2. URL 转义
用于对 URL 中的特殊字符进行编码。

函数:urlencode
作用: 对字符串进行 URL 编码。

常用场景: 用于 GET 请求的参数部分。

示例:

php
复制
$input = 'Hello World!';
echo urlencode($input);
输出:

复制
Hello+World%21
函数:rawurlencode
作用: 对字符串进行 URL 编码(遵循 RFC 3986 标准)。

区别: 空格编码为 %20,而不是 +。

示例:

php
复制
$input = 'Hello World!';
echo rawurlencode($input);
输出:

复制
Hello%20World%21
3. SQL 转义
用于防止 SQL 注入,对数据库查询中的特殊字符进行转义。

函数:mysqli_real_escape_string(MySQLi)
作用: 对字符串中的特殊字符进行转义,以便安全地插入到 SQL 查询中。

语法:

php
复制
mysqli_real_escape_string(mysqli $link, string $string): string
示例:

php
复制
$input = "O'Reilly";
$escaped_input = mysqli_real_escape_string($link, $input);
$sql = "INSERT INTO users (name) VALUES ('$escaped_input')";
函数:PDO::quote(PDO)
作用: 对字符串进行转义并添加引号,以便安全地插入到 SQL 查询中。

示例:

php
复制
$input = "O'Reilly";
$escaped_input = $pdo->quote($input);
$sql = "INSERT INTO users (name) VALUES ($escaped_input)";
4. JavaScript 转义
用于将 PHP 数据安全地嵌入到 JavaScript 中。

函数:json_encode
作用: 将 PHP 数据转换为 JSON 格式,自动处理特殊字符。

示例:

php
复制
$input = ['name' => 'John', 'message' => 'Hello "World"!'];
echo json_encode($input);
输出:

复制
{"name":"John","message":"Hello \"World\"!"}
5. Shell 命令转义
用于防止 命令注入,对 Shell 命令中的特殊字符进行转义。

函数:escapeshellarg
作用: 将字符串转义为安全的 Shell 参数。

示例:

php
复制
$input = 'file; rm -rf /';
$escaped_input = escapeshellarg($input);
echo $escaped_input;
输出:

复制
'file; rm -rf /'
函数:escapeshellcmd
作用: 对 Shell 命令中的特殊字符进行转义。

示例:

php
复制
$input = 'ls; rm -rf /';
$escaped_input = escapeshellcmd($input);
echo $escaped_input;
输出:

复制
ls\; rm -rf /
6. 自定义转义
如果需要更灵活的处理,可以使用正则表达式或字符串替换函数(如 str_replace、preg_replace)进行自定义转义。

总结
场景    函数    用途
HTML 转义    htmlspecialchars    防止 XSS 攻击。
URL 转义    urlencode / rawurlencode    对 URL 参数进行编码。
SQL 转义    mysqli_real_escape_string    防止 SQL 注入。
JavaScript 转义    json_encode    安全嵌入 PHP 数据到 JavaScript。
Shell 转义    escapeshellarg    防止 Shell 命令注入。
在实际开发中,应根据具体场景选择合适的转义函数,并结合预处理语句(如 PDO 预处理)或框架提供的安全机制,确保数据的安全性。

  • 登录或注册以发表评论
内容类型分类
技术文章
文章归类
编程与开发

文章标签

  • php

评论

文章标签

Excel
CSS
ubuntu
php
vim
五笔
VPN
Linux
command
HTML
drupal 8
centos
drupal 7
composer
Mysql
模块(module)
drush
Drupal
JavaSrcipt
apache
英语
drupal 9
nerdtree
network
果树种植
surround
drupal10
SEO
主题(theme)
二进制
更多

相关文章

  • php json_encode 函数将编码值转为json格式
  • php 用户自定义回调函数实例
  • php 回调函数实例
  • 因权限问题导致drupal cms 无法正常安装,那么该如何解决这个问题
  • kvm虚拟机启动失败:default网络未激活
  • ubuntu 安装kvm 虚拟机
  • 匿名函数(Anonymous Functions)详解
  • foreach 是 PHP 循环语句使用方法
  • implode() 函数的定义和用法
  • Drupal 11 主题制作教程
RSS源

友情链接 网站地图 版权信息 联系我们 网址导航 社区

Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号-1