1

在我的网站上,注册用户可以编写样式化的文本内容(我正在使用 nicEdit),然后他们可以将它们存储在 mysql 数据库中。我将它们的内容存储在 mysql db 上的文本类型字段中。然后我允许用户检索他们的 html 内容以显示在网站的用户页面上。我的问题是,在将用户 html 内容发送到 mysql 数据库之前,我是否应该使用避免 mysql 注入的技术。当用户在网络上检索 html 内容时,在网站上显示 html 内容之前我应该​​做什么。

4

1 回答 1

0

转义 中的特殊字符unsafe_variable,或使用参数化查询来防止 MySQL 注入。参数化查询被认为是更好的做法,但在变量中转义字符将需要较少的更改。

您需要使用带有适当 HTML 解析器的 HTML 清理库,以便将 HTML 输出给用户。参见例如HTML 净化器

htmlspecialchars将引用 HTML 中的所有标签,因此用户只会看到纯文本。您可以使用strip_tags,但strip_tags实际上并不验证 HTML,因此不推荐。

PDO 用法:

$unsafe_variable = $_POST["user-input"];
$sth = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");
$sth->bind_param("s", $unsafe_variable);
$sth->execute();
$sth->close();

mysqli用法:

$unsafe_variable = $_POST["user-input"]
$safe_variable = mysql_real_escape_string($unsafe_variable);
mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");
于 2013-04-22T08:52:11.650 回答