php - 保护必须写入数据库的输入的步骤?

标签 php security xss sql-injection

假设我有 Text,它是一个 POST 文本区域。在那个领域我应该可以放任何我想写的东西。例如 XSS、SQL 和其他最终的错误代码。对于标记,我将使用 BBCode,因此我想显示代码而不使其工作。
当然,我想避免的事情是数据库被搞砸了!有没有一种非常安全的方法来做到这一点?

我实际做的步骤是:

  1. 指定内容类型和字符集 Content-Type: text/html; charset=UTF-8

  2. 限制输入。 例如:最多 500 个字符

  3. 使用 htmlentities() $GoodText = htmlentities($Text, ENT_QUOTES, "UTF-8");

  4. 使用 mysql_real_escape_string() $GoodText = mysql_real_escape_string($GoodText);

  5. 存储在数据库中 $db->store($User, $GoodText);

据我所知,第 3 步和第 4 步完全相同,但我想得到一个解释。

无论如何,这是一种工作方法吗?
我还应该对 POST 表单使用 token 吗?

最佳答案

快速概览:

  • 针对跨站点请求使用 token 伪造品。

  • 使用 htmlspecialchars/实体 跨站点脚本攻击。

  • 使用 mysql_real_escape_string 反对 SQL注入(inject)。

为了数据库安全,您只需使用 mysql_real_escape_string 函数进行转义。

关于php - 保护必须写入数据库的输入的步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549222/

相关文章:

php - 从 php 调用时 python 输出无法正确输出

PHP 代码没有从 POST 提交数据

security - 通过移动应用程序安全验证位置声明

php - 如何在 PHP 中禁用 'e' PREG_REPLACE_EVAL 修饰符?

php - 间隔 30 分钟的循环时间字符串

php - 在 MySQL 表中按日期获取最后一个和下一个数据库记录?

PHP 高级安全 session 类

javascript - 防止 html onclick、onmouseout 中的 xss,...用于 SPA

java - 应用 xss 跨站脚本编码 jsp/servlet 应用程序的有效方法

xss - 防止 XSS 是网络应用程序更喜欢 POST 而不是 GET 的正当理由吗?