跳转到主要内容
你行网

Main navigation

  • 首页
  • 文章
  • 教程
  • 视频
  • 下载
  • 社区
  • 网站导航
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
  • 登录或注册以发表评论

评论

相关文章

PHP数据类型及其作用总结
php过滤器的作用和说明
php 会话使用方法
什么是PHPSTORM_META
php 数据类型和使用范围大小,和默认值
为什么session_start() 不用带参数
session_start(); 连接数据库前为什么要启用会话。
pdo连接方法和错误处理
PDO 和 MySQLi 连接数据库的区别
php的注释符号使用
类的自动加载是怎样去实现的。
一套框架的生命周期是多久
什么是类?
怎么实现一个静态化常用的设计模式
什么是面向对象,其主要特征是什么。
语句中include和request区别是什么。
error repoting 函数的作用是什么
PHP中isset和empty的区别
move_uploaded_file 参数说明
PHP APCu 缓存设置建议

文章标签

CSS
Excel
ubuntu
php
vim
Linux
五笔
HTML
command
drupal 7
composer
centos
Mysql
drupal 8
模块(module)
drush
JavaSrcipt
apache
VPN
drupal 9
英语
Drupal
nerdtree
SEO
network
surround
果树种植
drupal10
主题(theme)
phpmyadmin
ssh
权限
yum
声音
二进制
ssl
selinux
HTML5
用户
password
Dreamweaver
flameshot
颜色
翻译
uploadprogress
视图(views)
firewalld
DDEV
gzip
快捷键
kernel
xdebug
错误
ckeditor
mbstring
C语言
certbot
源地址
电脑基础
git
php扩展
apt
简介
压缩解压
表单
httpd
电子秤
breadcrumb
邮件验证
AI
superfish
diff
重定向
网站备份
tagclouds
java
摄影
WireGuard
docker
adsense
drupal9
短信验证
simple_adsense
csharp
电脑技巧
算法
youtube
RSS
JavaScript
版本号
badblocks
端口
cookie
VUE
网站运营
计算机基础
form
gimp
mod_expires 模块
nginx
http验证
zip
重定向,301
curl
input
赚钱
maven
drupal 11
RFID
ip
dns
drupal11
npm
标签优化
netstat
哈希值
字段
更多
RSS源
本站由阿里云强力驱动,幸运券优惠链接
Copyright © 2019 - 2021 你行网 版权所有  粤ICP备19072650号