gpt4 book ai didi

PHP/MySQL - 显示名称/用户名/密码的安全字符,带有 PDO

转载 作者:可可西里 更新时间:2023-11-01 07:04:38 24 4
gpt4 key购买 nike

这里有点 PHP/MySQL 新手...

我一直在构建一个基于 PHP 的网站,该网站使用 MySQL 数据库来存储用户信息,例如他们的显示名称、用户名和密码。

我一直在学习转义、准备语句等,以及如何防止像“bobby”这样的 SQL 注入(inject);删除表用户--。

我正在使用 PDO 准备语句从表单中获取用户输入,以便将它们注册到数据库中。但是,我需要了解一些事情:

  1. 由于我使用的是准备好的语句,显示名称、用户名、密码等,我可以允许像这样的特殊字符吗@、#、$,甚至“单”或“双”引号?那么空间呢,国际字符、带重音的字符或类似 ♥ 的字符?当我问允许这些字符是否“可以”时,我是想知道是否会出现任何进一步的安全风险允许在人们的用户名或事物中使用引号或括号喜欢粗体或斜体的 html 标签?

  2. 如果可以允许大多数特殊字符,但不允许一些:是有任何特定的“危险”字符(在 MySQL 的范围内)我绝对需要将其设为非法? (我觉得引号可能合适这个议程,但我收到的信号不一。)

  3. 如果我允许使用典型的“字母数字”之外的字符和下划线”范围,有没有我以后可能遇到的陷阱(在 MySQL、SQL 或 PHP 中)允许使用奇怪的字符?我会吗需要以某种方式使 html 标签显示为字符串,而不是实际的标签,在显示人们的用户名时?或者我需要逃跑吗每当我想向他们查询时在人们的用户名中引用?或者这些都不重要,因为我将使用准备好的语句与 PDO?

  4. 像 utf8 或 utf16 这样的字符集会出现在任何地方吗?可以接受最广泛的显示名称和用户名,同时还在确保这些字母表可以呈现在我的网站上吗?

  5. 我知道有些西里尔字母看起来与英文的。我曾经直接从 MS Word 中复制这些并使用他们在我的用户名中。我意识到这些可以用来感知模仿其他成员,只需换出一个英语“a”为西里尔字母“a”。带有 ♥ 的用户名可能很难搜索是否有人不精通替代代码。应该这样是一个问题?您对此有何看法?

提前感谢任何能给我一些见解的人。

最佳答案

SQL Injection Cheat Sheet有几个 MySQL 查询示例,您可以在开发过程中对其进行测试。

这是一个很好的资源,可以帮助您了解关于什么是“可接受”的一些问题,并且您必须考虑“一条数据”的整个生命周期。

通常,一段数据可能以HTML 形式 开始,然后POST 到您的PHP 脚本(因此,如果用户需要,他们可以直接POST 数据而无需表格)。然后您的 PHP 脚本(希望)清理 数据,然后存储

在数据库中时,您可能正在执行备份 操作,将其保存到SQLDump,或进行其他某种维护。

然后显然数据会在某个时候被读取,如果它是一种 Markdown 语言,它可能会被编译,最终它被发送到某人的浏览器,它可能是< strong>注入(inject)html并显示

如您所见,在数据的生命周期中有很多地方可能会出错。如果您没有考虑到所有这些,您可能会看到一些常见的错误,例如每次保存/加载数据时反斜杠自身堆积。sql 错误,容易受到攻击等。

你想支持什么样的数据?这取决于你。只要确保您正确处理它即可。

关于PHP/MySQL - 显示名称/用户名/密码的安全字符,带有 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113406/

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