基本的MySQL / PHP过滤

时间:2010-01-05 23:22:47

标签: php mysql filter

我知道这是一个非常基本的问题,这就是为什么我只想要一个简单的答案,有几种方法可以让我的用户输入安全的mysql。

使用这个BEST方法

mysql_real_escape_string()

在进入mysql查询的所有用户提交的项目上?

如果我使用上面的内容,当我从mysql中获取它以在PHP页面上显示时,是否需要在该日期使用另一个函数?

3 个答案:

答案 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 之前使用清理库来清理他们的数据,然后再将其显示在页面上。