跳转到主要内容
你行网

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

评论

文章标签

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

相关文章

  • 因权限问题导致drupal cms 无法正常安装,那么该如何解决这个问题
  • kvm虚拟机启动失败:default网络未激活
  • ubuntu 安装kvm 虚拟机
  • 匿名函数(Anonymous Functions)详解
  • foreach 是 PHP 循环语句使用方法
  • implode() 函数的定义和用法
  • Drupal 11 主题制作教程
  • 检查 Composer 是否为官方源
  • 在 Drupal 中权重(Weight)是怎样排序的
  • 解决 Drupal 主题缺失问题
RSS源

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

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