假设我有Text
这是一个post文本区域。在那个领域里,我应该可以写任何我想写的东西。例如xss、sql和其他最终的错误代码。对于标记,我将使用bbcode,因此我希望在不工作的情况下显示代码。
当然,我想避免的是,数据库被搞砸了!有没有一种非常安全的方法来做到这一点?
我实际做的步骤是:
指定内容类型和字符集Content-Type: text/html; charset=UTF-8
限制输入。Ex.: Max 500 characters
使用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表单中使用标记?
最佳答案
快速概述:
对跨站点请求使用令牌
伪造品。
对使用htmlspecialchars/entities
跨站点脚本攻击。
对使用mysql_real_escape_string
SQL注入。
为了数据库安全,您只需要使用mysql_real_escape_string函数进行转义。