我想知道在执行以下程序时是否有任何缺点或不良做法:
而不是执行以下操作:
因为我们在很多地方显示相同的$ user_input,所以对输入感觉更有效率,这样做是否有任何缺点/不良做法/漏洞利用能力?
干杯!
对以下问题的回复:
@Matt:一般来说,为了保持可读性和可维护性,请尽量将其存储为尽可能接近原始的未经过滤的内容。这取决于两件事: 是否有其他人/计划会参考这些数据? 数据是否需要易于编辑?
@Sjoerd:如果你想将数据显示为HTML以外的其他内容,那就有一个缺点,例如: CSV下载,PDF等
答案 0 :(得分:3)
这取决于两件事:
方法一的优点是,如果数据在一个地方中使用,并且每次都会调用htmlentities()
,那么您将保存此步骤。
然而,如果HTML数据非常大,这只会带来显着的改善。一般而言,为了保持可读性和可维护性,请尽量将其存储为尽可能接近原始未经过滤的内容。
事实上,您可能会发现HTML无论如何都要存储错误。最好存储类似Markdown的内容,并在查看时将其转换为HTML。
答案 1 :(得分:3)
我建议不要这样做。如果除了将其显示为HTML(在控制台中显示,发送文本电子邮件,写入日志等)之外,您还需要其他任何数据,则必须将其转换回来。
一个好的做法是仅在最后时刻应用此类转换。在插入数据库之前使用mysql_escape,在显示为HTML之前使用htmlentities(或htmlspecialchars)。这样你总能知道你的逃生功能应该在哪里。如果他们不在那里,你很容易告诉你做错了什么。您还知道数据库中的数据始终是干净的,您无需记住是否对其进行了编码,使用了什么以及如何将其重新编码。
答案 2 :(得分:1)
如果您想将数据显示为除HTML之外的其他内容,则存在缺点,例如CSV下载,PDF等