如何在不使用引号和其他东西的情况下保护php的$u POST
我有一个tinyMCE编辑器,它将数据传递给php处理文件 如果我使用如何在不使用引号和其他东西的情况下保护php的$u POST,php,tinymce,Php,Tinymce,我有一个tinyMCE编辑器,它将数据传递给php处理文件 如果我使用$variable=$\u POST(['tinyMCE\u textarea'])一切正常。 但我想保护它,这样就不会有什么坏消息从用户谁输入了一些数据到textarea 当我使用$variable=mysql\u real\u escape\u字符串($\u POST(['tinyMCE\u textarea']) 结果会被一些符号损坏。如何在不更改变量的情况下增加最大安全性?只需记住在输出前转义用户输入(例如使用html
$variable=$\u POST(['tinyMCE\u textarea'])代码>一切正常。
但我想保护它,这样就不会有什么坏消息从用户谁输入了一些数据到textarea
当我使用$variable=mysql\u real\u escape\u字符串($\u POST(['tinyMCE\u textarea'])代码>
结果会被一些符号损坏。
如何在不更改变量的情况下增加最大安全性?只需记住在输出前转义用户输入(例如使用htmlentities()
)并在将字符串存储到数据库之前对其进行转义。使用SQL参数绑定,您可以避免任何注入。TinyMCE能够清理数据,但关键是不要依赖客户端的东西
要保护数据库的数据,请使用mysql\u real\u escape\u string()
。结果用于mysql,不用于显示
为了保护数据的显示安全,您可以使用htmlspecialchars()
函数。htmlspecialties()也可以工作,但会转换所有适用的实体,因此为了安全起见,您只需要htmlspecialchars()
所以简图是
.// Insert to database
mysql_query("INSERT INTO data (content) VALUES ('" . mysql_real_escape_string( $_POST['tinyMCE_textarea'] ) . "')");
.// Display to user - doesn't matter whether the data is from post or database
echo htmlspecialchars ( $_POST['tinyMCE_textarea'] );
使用准备好的语句或PDO。
使用htmlentities()或covert至少“如何”保护”“是吗?您是在试图防范吗?是的,还有其他可能的威胁我建议将值存储在变量中,这样您就不会直接处理$\u POST变量了谢谢!另一个问题,你建议我所有来自用户的东西,以你写的方式进入数据库?我的意思是它工作得很好,但在更新或将数据插入mysql时,向每个变量添加mysql\u real\u escape\u字符串是否正确?请编写一个简单的示例,从通过POST获取变量到将其存储到mysql。但是用最可靠的方法,简单易行,当然安全,大卫。所有进入数据库的用户输入文本都应该转义。某些数据可以通过强制转换为int/double或通过正则表达式进行验证,但在其他情况下,转义是必需的。正如kjetilh所说,为了可读性,您可能首先希望将post存储到一个变量中。