保护必须写入数据库的输入的步骤?
假设我有一个 POST 文本区域的 Text
。在那个领域我应该可以写任何我想写的东西。例如 XSS、SQL 和其他最终的不良代码。对于标记,我将使用 BBCode,因此我想显示代码而不使其工作。
当然,我想避免的事情是数据库被搞砸了!有没有一种极其安全的方法来做到这一点?
我实际执行的步骤是:
指定 Content-Type 和字符集
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);
< /p>将其存储在数据库中
$db->store($User, $GoodText);
code>
据我所知,步骤 3 和 4 完全相同,但我'我想得到一个解释。
无论如何,这是一种工作方法吗?
我还应该对 POST 表单使用令牌吗?
Lets say I have Text
that is a POST textarea. In that field I should be able to put whatever I'd like to write. Such as XSS, SQL, and other eventual bad codes. For the markup I'll use the BBCode, so I'd like to display the code without making it work.
The thing, of course, that I wanna avoid, is that the DB gets screwed! Is there an extremely safe way to do this?
The steps I actually do are:
Specify the Content-Type and Charset
Content-Type: text/html; charset=UTF-8
Limit the input.
Ex.: Max 500 characters
Use htmlentities()
$GoodText = htmlentities($Text, ENT_QUOTES, "UTF-8");
Use mysql_real_escape_string()
$GoodText = mysql_real_escape_string($GoodText);
Store it in the DB
$db->store($User, $GoodText);
As far as I read the step 3 and 4 are quite the same, but I'd like to get an explanation.
Anyway, is this a working method?
Should I also use tokens for POST forms?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为您快速概述:
针对跨站点请求使用令牌
伪造。
使用 htmlspecialchars/entities 来对抗
跨站点脚本攻击。
使用 mysql_real_escape_string 来对抗
SQL注入。
为了数据库安全,您只需使用 mysql_real_escape_string 函数进行转义。
Quick overview for you:
Use tokens against cross site request
forgeries.
Use htmlspecialchars/entities against
cross site scripting attacks.
Use mysql_real_escape_string against
SQL injection.
For database security, you'll only have to escape using the mysql_real_escape_string function.
我使用的这个函数基本上是步骤 3 和步骤 4 的结合。它适用于一维数组和字符串。
I use this function that is basically steps 3 and 4 combined. It works with one dimensional array and strings.