正确的转义方法是什么?
我有一个基本的注册表、用户名和密码,例如。我使用 PDO 通过 php 脚本(一切都在 php 中)将这些值保存到数据库,因此不可能有 SQL 注入(inject)(我希望,如果有更安全的方法来做到这一点,请告诉我)。 我的问题是,我应该在将用户名值保存到数据库之前对其进行转义吗?所以如果有人尝试这样做
<script>alert("hi")</script>
它会保存这样的东西
<script>alert("hi")</script>
进入数据库。之后就不应该有 XSS 了(是的,有点天真的说法,但我不知道还能怎么说)。或者保存纯文本
<script>alert("hi")</script>
进入数据库,然后我想在某个地方打印这些值来转义它们?
在我看来,更安全的方法是在保存到数据库事件中进行转义,因此将转义值放入数据库中,然后打印它们。但我猜我的问题是,每当我想打印它们时,我是否应该再次对数据库中的转义值使用转义函数?或者直接按原样打印它们(应该转义)。我不喜欢第一个“解决方案”,因为
<script>alert("hi")</script>
将在浏览器中呈现为转义,但不仅仅是像<
这样的安全字符
而第二种解决方案似乎是,如果我一旦搞砸了,我就注定失败了。
最佳答案
经验法则:如果用户稍后能够编辑其输入,则将其保存在未转义的数据库中。
否则在写入数据库之前转义以保存每个输出的处理步骤。
关于php - 将值转义到数据库中或之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22621809/