快速提问,在将数据插入数据库之前或之后调用htmlentities()
(或htmlspecialchars()
)是一个更好的主意吗?
之前:新的较长字符串将导致我必须更改数据库以在字段中保存更长的值.(maxlength="800"
可以更改为804字符串)
之后:这将需要更多的服务器处理,并且htmlspecialchars()
可以在每次页面加载或AJAX加载时进行数百次调用.
SOOO.检索结果时转换会显着减慢我的代码吗?我应该更换数据库吗?
pix*_*x0r 33
我建议将最原始形式的数据存储在数据库中.在选择输出数据的方式和位置时,这为您提供了最大的灵活性.
如果您发现性能有问题,可以以某种方式缓存此数据的HTML格式版本.请记住,过早优化是一件坏事.
blo*_*art 11
我没有PHP的经验但通常我总是转换或逃离最接近输出.您不知道输出要求何时会发生变化,例如您可能希望将数据吐出为XML或JSON数组,因此转换为HTML然后存储意味着您仅限于将数据用作HTML.
在php/MySQL Web应用程序中,数据以两种方式流动
数据库 - >脚本语言(php) - > HTML输出 - >浏览器 - >屏幕和键盘 - >浏览器 - > $ _POST - > php - > SQL语句 - >数据库.
数据定义为用户提供的所有内容.
始终总是......
A)当你将它移动到SQL语句中时,通过mysql_real_escape_string处理数据,并且
B)在将数据移动到HTML输出时通过htmlspecialchars处理数据.
这将保护您免受SQL注入攻击,并使html字符和实体正确显示(除非您设法忘记一个地方,然后您已经打开了一个安全漏洞).
我是否提到必须对任何用户可能通过脚本触摸,更改或提供的每一条数据进行此操作?
ps出于性能原因,请在任何地方使用UTF-8编码.
归档时间: |
|
查看次数: |
14194 次 |
最近记录: |