Php 文本区域中的WordPress SQL命令
假设我有一个表单,可以在post上生成以下内容:Php 文本区域中的WordPress SQL命令,php,mysql,wordpress,prepared-statement,Php,Mysql,Wordpress,Prepared Statement,假设我有一个表单,可以在post上生成以下内容: $title = sanitize_text_field($_POST['title']); $text = esc_textarea($_POST['$text']); 然后我使用prepare语句在数据库中插入值,但我有一个问题。我用这行代码将值发送到数据库: $wpdb->prepare("INSERT INTO $table_emails VALUES('', %s, %s)", $title, $text); 这样做安全吗?比
$title = sanitize_text_field($_POST['title']);
$text = esc_textarea($_POST['$text']);
然后我使用prepare语句在数据库中插入值,但我有一个问题。我用这行代码将值发送到数据库:
$wpdb->prepare("INSERT INTO $table_emails VALUES('', %s, %s)", $title, $text);
这样做安全吗?比如说,防止人们插入类似于
SELECT*from table_name
?一个准备好的语句“注入”值,并将查询包装在“标记”和其他内容中。我不是MySQL专家,因为我现在依赖于查询生成器,但准备好的语句的一般目的是避免注入
上面的输出应该是
INSERT INTO `$table_emails` VALUES ('','title', 'text');
如果有人试图在上述内容中插入一条语句,我敢肯定(在大约6年内没有使用wordpress),它会是这样的:
INSERT INTO `$table_emails` VALUES ('', '\';SELECT * FROM blah;\'', '');
注意,注射现在只是一根绳子,我的年轻学徒
但是,是的,事先准备好的声明是老板防止博比丢桌子的方式。谢谢你的回答@sourraspberi=)那么,这安全吗?我已经做了一个测试,sql作为一个简单的字符串插入。没有伤害。你会没事的,但是要考虑的是HTML和JavaScript注入。不确定wordpress是否涵盖了这一点,但请检查在显示数据时(无论插入的数据显示在站点上的何处)是否使用
htmlEntes()
这将导致页面上出现与html相反的字符串!就我在wordpress codex中所读到的内容而言,sanitize_text_field()和sanitize_textarea_field()都会解决这个问题。(只需将esc_textarea()更改为清理_textarea_field())无论如何,谢谢=)没关系!你应该去看看拉威尔;)太好了:D