我知道这是一个非常基本的问题,这就是为什么我只想要一个简单的答案,有几种方法可以让我的用户输入安全的mysql。
使用这个BEST方法
mysql_real_escape_string()
在进入mysql查询的所有用户提交的项目上?
如果我使用上面的内容,当我从mysql中获取它以在PHP页面上显示时,是否需要在该日期使用另一个函数?
答案 0 :(得分:4)
PHP有一个非常好的过滤功能
http://php.net/manual/de/ref.filter.php
/*** use a callback filter to mysql_real_escape_string ***/
$answer = filter_input(INPUT_POST, "answer", FILTER_CALLBACK, array("options"=>"mysql_real_escape_string"));
/*** create an sql query ***/
$sql = "INSERT INTO quiz (answers) VALUES ('{$answer}')";
/*** echo the query ***/
echo $sql;
答案 1 :(得分:4)
使用预准备语句是将数据放入MySQL的最佳方式。准备好的语句明确地告诉MySQL什么是SQL以及什么是数据,因此MySQL不会在数据中执行任何SQL。
您可以使用Mysqli开始使用预准备语句。
至于在PHP页面中显示数据,您可以使用htmlspecialchars()来转义输出。
答案 2 :(得分:2)
mysql_real_escape_string()
或 prepared statements 进入数据库。htmlentities()
。请注意,htmlentities不会处理所有可能的跨站点脚本攻击,具体取决于用户的浏览器和他们使用的特定攻击媒介。许多人在 HTML Purifier 之前使用清理库来清理他们的数据,然后再将其显示在页面上。