我试图了解在将数据保存到wpdb 班我搜索了处理HTML字符串数据的位置,并在$this->query()
方法中的查询字符串被剥离,并认为它可能存在。开始了line 1798. 这个$query
字符串变量已剥离:
$stripped_query = $this->strip_invalid_text_from_query( $query );
但我不明白。我
just can\'t 查找剥离变量
$stripped_query
在之后的查询中使用。如果该方法与原始方法不完全相同,则返回false?:
if ( $stripped_query !== $query ) {
$this->insert_id = 0;
return false;
}
为什么?也许我误解了什么
strip_invalid_text_from_query()
正在做什么?
无论如何正如我所说,我只想找到将HTML固定到数据库安全字符串的方法。例如,换行符会破坏查询等等。有人知道那在哪里吗?
SO网友:Jacob Peattie
HTML并没有什么特别之处,它需要与插入的任何其他类型的数据有任何不同的处理方式。这只是文字。因此,中没有特定的“HTML处理程序”wpdb
.
数据库中的任何HTML仍然需要escaped 但是,要确保查询安全,不受SQL注入攻击。在里面wpdb
这由prepare()
方法但需要转义的不仅仅是HTML。需要首先转义SQL查询中所有用户提供的值。
$]strip_invalid_text_from_query()
和strip_invalid_text()
是仅由内部使用的受保护方法wpdb
, 而且似乎与HTML没有任何关系。它们的目的似乎是删除数据库字符集中不可用的任何字符。
但这实际上并不是用来剥离角色的。它仅用于通过将结果与原始值进行比较来检查是否存在任何无效字符。如果删除了字符,则操作失败。这就是为什么$stripped_query
在其他任何地方都没有使用。
如果要将数据插入WordPress数据库并确保其安全,则需要使用$wpdb->prepare()
或任何其他helper methods 在内部使用它。