Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文本区域中的WordPress SQL命令_Php_Mysql_Wordpress_Prepared Statement - Fatal编程技术网

Php 文本区域中的WordPress SQL命令

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); 这样做安全吗?比

假设我有一个表单,可以在post上生成以下内容:

$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