Php 在将数据发送到mySQL之前,如何清理来自用户的数据?

Php 在将数据发送到mySQL之前,如何清理来自用户的数据?,php,mysql,security,sanitization,Php,Mysql,Security,Sanitization,我现在正在做一个论坛 在将输入数据发送到MySQL数据库之前,我希望对输入数据(即来自用户的帖子)进行清理 我已经在搜索一些函数来实现这一点,但我不确定是否使用了足够的函数,以及它们是否都足够安全。欢迎提出任何建议 以下是我的代码: $message=$_POST['answer']; $message=nl2br($message); //adds breaks to my text $message=stripslashes($message); //removes backslahes (

我现在正在做一个论坛

在将输入数据发送到MySQL数据库之前,我希望对输入数据(即来自用户的帖子)进行清理

我已经在搜索一些函数来实现这一点,但我不确定是否使用了足够的函数,以及它们是否都足够安全。欢迎提出任何建议

以下是我的代码:

$message=$_POST['answer'];
$message=nl2br($message); //adds breaks to my text
$message=stripslashes($message); //removes backslahes (needed for links and images)
$message=strip_tags($message, '<p><a><b><i><strong><em><code><sub><sup><img>'); //people can only use tags inside 2nd param
$message = mysql_real_escape_string($message); //removes mysql statements i think (not sure)
$message=$\u POST['answer'];
$message=nl2br($message)//在我的文本中添加分隔符
$message=stripslashes($message)//删除后斜杠(链接和图像所需)
$message=strip_标签($message,
)//人们只能在第二参数内使用标签
$message=mysql\u real\u escape\u字符串($message)//删除我认为的mysql语句(不确定)

编辑:请告诉我是否应该向strip\u tags功能添加一些标签。也许我忘了一些。

试着改用PDO。它具有强大的绑定功能,真正提高了安全性。以下是一些例子:

PDO在PHP5中是默认的,所以现在几乎无处不在。

当您保存到DB时:

$message=strip_tags($message, '<p><a><b><i><strong><em><code><sub><sup><img>'); //people can only use tags inside 2nd param
$message = mysql_real_escape_string($message); //removes mysql statements i think (not sure)
此外,在写入html输入元素时使用,如
text
textarea

OBS:不要重新发明轮子。了解一些PHP框架,它提供了非常安全的数据管理方法。
.

如果您希望允许在论坛中使用有限的HTML(从您使用strip_tags()的方式可以看出),请使用;否则,这些标记的属性中的javascript将很容易受到攻击


顺便说一句,现在你正在剥离你添加的

标记和时间。仍然允许在
等属性中使用XS,因为你的评论说你不确定
mysql\u real\u escape\u string()
做什么,你应该这样做,为了理解为什么这一点如此重要。@jannesbraet只需阅读我发布的链接NL2BR()就可以帮助控制HTML块的输出。stripslashes()基本上没有实际值,它帮助“撤消”(错误)以前可能应用过的输出转义(最适用于Javascript块中的字符串)。strip_tags()是一种穷人试图避免跨站点脚本编写的方法,它只在一个特定的HTML输出上下文中有效。这三个功能都与数据库无关,只会破坏你的数据。如果你编写自己的应用程序,请使用php5.3+。我使用的是主机服务器,但它来自我朋友的父亲,所以我无法联系他们,就像NomikOS说的,你真的应该切换到php5(切换主机?),特别是考虑到您的安全问题。那么mysql\u real\u escape\u string()是否如此不安全?我只是想知道如果你有PHP4.4.9,你可能会有更大的问题。它有许多安全漏洞,不再接收任何上游安全更新。检查您的发行版是否仍然受支持,以及您是否正在从操作系统提供商处接收并应用常规修补程序。如果不是,你真的需要升级你的操作系统
$message=nl2br($message); //adds breaks to my text
$message=stripslashes($message); //removes backslahes (needed for links and images)