php - 如果输入有 html,则清理用户输入

标签 php mysql sql sanitization

我有用户输入,其中包含我需要清理的 html。目前我正在使用:

$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = preg_replace('/[^a-zA-Z0-9_-]/', '', $data);

用于其他输入(无 html)。我允许使用下划线和连字符,因为它们是用户个人资料的 Twitter 用户名。使用其中的 html 标记清理输入有什么想法吗?

最佳答案

通过其他方式对 HTML 进行清理可以保护站点免受 XSS 攻击。根据XSS (Cross Site Scripting) Prevention Cheat Sheet清理 HTML 取决于您如何打印用户数据,例如:下表显示了将应用不同保护机制的不同场景:

enter image description here

php strip_tags 函数可用于某些情况,但它对所有类型的恶意代码都不安全。我建议关注 OWASP。

关于php - 如果输入有 html,则清理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391843/

相关文章:

php - 在 PHP 中计算 Cookie 大小

sql - MySQL - 如何在列内随机排列结果?

sql - 如何在 SQL Server 中使大型 IN 子句更有效?

php - 为什么谷歌地图代码阻止了我的其他 js 脚本?

php - 从 PHP 编译 C,尝试执行 'cc1' 时出现执行错误

mysql - 在整个表中更改 MySQL ENUM 值的值

sql - sqlite3 : error?中的OR语句

php - SQL 多重更新语句

php - 从 PHP 数组生成 HTML 表格

mysql - 找到未使用的索引