Ste*_*ven 14 php wordpress sanitize
我正在使用Wordpress作为CMS开发应用程序.
我有一个包含大量输入字段的表单,需要在存储到数据库之前进行清理.
我想防止SQL注入,注入javascript和PHP代码以及其他有害代码.
目前我正在使用自己的方法来清理数据,但我觉得使用WP使用的功能可能会更好.
我已经看过Wordpress 中的数据验证,但我不确定我应该使用多少这些函数,以及按什么顺序.任何人都可以告诉WP功能最好用吗?
目前我通过执行以下操作"清理"我的输入:
因为带有重音符号的字符(é,ô,æ,ø,å)以有趣的方式存储在数据库中(即使我的表设置为ENGINE=InnoDB,DEFAULT CHARSET=utf8和COLLATE=utf8_danish_ci),我现在正在使用htmlentities转换可以具有重音的输入字段().
在创建SQL字符串以输入数据时,我使用mysql_real_escape_string().
我不认为这足以阻止攻击.因此,非常感谢建议改进.
bob*_*nce 16
输入"卫生处理"是假的.
你不应该试图通过过滤(*)或逃逸输入保护自己注射的困境,你应该用原始字符串,直到你把它们放到另一个上下文的时间工作.此时,您需要针对该上下文的正确转义函数,即mysql_real_escape_stringMySQL查询和htmlspecialcharsHTML输出.
(WordPress添加了自己的转义函数esc_html,原则上没有什么不同.)
(*:嗯,除了特定应用的需求,如检查电子邮件地址确实是一个电子邮件地址,以确保密码是合理的,等也有在输入过滤掉控制字符一个合理的说法.阶段,虽然这很少实际完成.)
我现在正在使用htmlentities()转换可以有重音的输入字段.
我强烈建议不这样做.您的数据库应包含原始文本; 如果您将其编码为HTML,则会对列进行数据库操作变得更加困难.你逃脱字符,如<和"在同一时间,非ASCII字符了.当您从数据库获取数据并将其用于将其复制到页面之外的其他原因时,您现在在数据中出现了虚假的HTML转义.在您将文本写入页面的最后一刻之前,请勿进行HTML转义.
如果您在将非ASCII字符输入数据库时遇到问题,那么您应首先解决这个问题,而不是采用不可持续的解决方法,例如存储HTML编码数据.这里有很多关于让PHP和数据库谈论正确的UTF-8的帖子,但主要的是确保你的HTML输出页面本身使用Content-Typeheader/meta 正确地作为UTF-8服务.然后检查你的MySQL连接是否设置为UTF-8,例如使用mysql_set_charset().
在创建输入数据的SQL字符串时,我使用mysql_real_escape_string().
对,那是正确的.只要你这样做,你就不容易受到SQL注入攻击.你可能会,如果你是在数据库端,而不是模板输出端HTML转义是vulnerabile到HTML注入(导致XSS).因为任何未通过数据库的字符串(例如,直接从中获取$_GET)都不会被HTML转义.
| 归档时间: |
|
| 查看次数: |
4827 次 |
| 最近记录: |