gpt4 book ai didi

php - 用户输入,在发送到数据库之前进行清理和 sanitizer

转载 作者:IT老高 更新时间:2023-10-29 00:21:15 27 4
gpt4 key购买 nike

我在这里搜索了很多问题,我发现它们要么非常陈旧,要么建议使用准备好的语句PDO,而我没有使用 。所以我需要你的帮助。

我有一个小型讨论/聊天框,用户可以在其中使用 <textarea> 提交消息

我需要的是清理和过滤用户输入,使其只接受纯文本(例如,没有标签、没有 html 标签、没有脚本、没有链接等)。 另外,允许换行很重要。

根据我的阅读,我按以下顺序执行以下操作:

  1. trim()
  2. htmlentities($comment, ENT_NOQUOTES)
  3. mysqli_real_escape_string()
  4. nl2br()

我做的对吗?或者我遗漏了什么?

还有echo 时我有什么必须做的吗?从数据库中获取数据?

真的,感谢你的帮助和善意

最佳答案

首先,保持文本的逻辑性和简洁性:

trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below

这些建议背后的逻辑:数据库中的数据应该只是普通数据。不是 htmlentities,不是 br-tags。但是,您必须执行 escape_string 才能将数据从 PHP 传递到 MySQL;转义不会被存储。

但是……那只是中间的一步。数据从何而来?旧版本的 PHP 试图“保护”您添加的转义符和其他对 HTML 有效但会搞砸 MySQL 的垃圾。关闭这种魔法转义,得到原始数据。

数据去了哪里?可能是 HTML?在SELECTing之后数据退出表,然后先做htmlentities()和(可选)nl2br() ;

请注意,如果您希望保留类似 <I> 的内容(斜体),你是在自找麻烦——大麻烦。黑客需要做的就是<script> ...将各种肮脏的东西注入(inject)您的网页,甚至可能是您的整个系统。

关于php - 用户输入,在发送到数据库之前进行清理和 sanitizer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com