假设我有 Text
,它是一个 POST 文本区域。在那个领域我应该可以放任何我想写的东西。例如 XSS、SQL 和其他最终的错误代码。对于标记,我将使用 BBCode,因此我想显示代码而不使其工作。
当然,我想避免的事情是数据库被搞砸了!有没有一种非常安全的方法来做到这一点?
我实际做的步骤是:
指定内容类型和字符集
Content-Type: text/html; charset=UTF-8
限制输入。
例如:最多 500 个字符
使用 htmlentities()
$GoodText = htmlentities($Text, ENT_QUOTES, "UTF-8");
使用 mysql_real_escape_string()
$GoodText = mysql_real_escape_string($GoodText);
存储在数据库中
$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/