【发布时间】:2013-04-01 10:16:09
【问题描述】:
我在插入 MySql 时的方法
我想我在 *.com 中读到“如果您需要转义或类似操作,请及时执行”,因此在验证页面中我验证了用户输入(空或不检查、长度检查和结构检查(例如:邮件结构、自定义标签结构);我使用$_POST[''] 变量作为输入。在验证过程中,即使在自定义错误打印部分,我的错误消息也不包括消息文本中的任何$_POST[''] 值。
作为临时说明:我在 php-MySql 交互期间使用准备好的语句和参数化查询。如果输入得到验证;就在插入 MySql 之前,我 从输入中剥离标签,因为除了自定义结构化标签之外,我不允许任何 html 标签。 (例如**bold text** === <strong>bold text</strong>)然后我将用户输入插入MySql db。
从 MySql 获取并将输出打印到屏幕时的我的方法
我只应用 htmlspecialchars() 命令从 MySql db 打印到屏幕
我的问题
我不确定自己。我的方法有什么明显或隐藏的弱点吗?提前感谢 php 大师的宝贵 cmets。 BR
更新
在插入 MySql 数据库期间我不会剥离标签。具体原因请参考下方ÁlvaroG.Vicario的cmets。 BR。
【问题讨论】:
-
如果您的输入不是 HTML,请不要去除 HTML 标签。你只是在破坏用户数据。
-
@ÁlvaroG.Vicario 如果用户输入一些javascript或smilar恶意代码怎么办?然后我将接受这些输入到 mysql db。但由于我将在打印到屏幕时使用 htmlspecialchars,因此恶意代码不会是危险的。所以剥离标签没有任何好处。我理解正确吗?你能举一个例子,我需要在 INSERT INTO 期间剥离标签吗?谢谢,BR
-
如果它没有好处,那将是无害的。我的意思是,您实际上可以打破用户关心的输入内容。请不要这样做。
-
好的,谢谢,我会根据您的 cmets 更新我的问题。 BR。
标签: php mysql security prepared-statement parameterized