如何在不使用引号和其他内容的情况下保护 php 的 $_POST
我有 tinyMCE 编辑器,它将数据传递到 php 处理文件。
如果我使用 $variable=$_POST(['tinyMCE_textarea']);
一切正常。 但我想保护它,这样在文本区域中输入一些数据的用户就不会产生任何不好的结果。
当我使用 $variable=mysql_real_escape_string($_POST(['tinyMCE_textarea']));
结果会受到一些 \"
符号的损坏。那么如何在不更改变量的情况下增加最大的安全性呢?
I have tinyMCE editor which is passing data to php processing file.
If I use $variable=$_POST(['tinyMCE_textarea']);
everything is ok.
But I want to secure it so nothing bad will come from user who entered some data into textarea.
And when I use $variable=mysql_real_escape_string($_POST(['tinyMCE_textarea']));
The result becomes dammaged with some \"
signs. So how can I add maximum security without changing the variable ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
TinyMCE 能够清理数据,但重要的是您不要依赖客户端的东西。
为了保护数据库的数据,您可以使用
mysql_real_escape_string()
。结果旨在与 mysql 一起使用,而不是用于显示。为了保护数据的显示,您可以使用
htmlspecialchars()
函数。 htmlentities() 也可以工作,但会转换所有适用的实体,因此为了安全起见,您只需要 htmlspecialchars()。所以简化后的图就是
TinyMCE is able to clean up data, however it is critical that you don't rely on client-side stuff.
To secure data for database, you use
mysql_real_escape_string()
. The result is intended for use with mysql and not for display.To secure data for display, you use the
htmlspecialchars()
function. htmlentities() also works but would convert all applicable entities, so for security you only need htmlspecialchars().So the simplified picture is
使用准备好的语句或 PDO。
使用 htmlentities() 或至少隐藏 '<'和“<” '"' 到 "& >”等等..
use prepared statement or PDO.
use htmlentities() or covert atleast '<' and '<' '"' to "& gt;" and so ..
只需记住在输出之前对用户输入进行转义(例如使用
htmlentities()
),并在将字符串存储到数据库之前对字符串进行转义。Just remember to escape the user input before outputting (using for example
htmlentities()
) and escape the string before storing it in your database.使用 SQL 参数绑定,您就可以免受任何注入。
Use SQL parameter binding, and you are safe from any injection.