此代码是否受SQL注入保护



这样足够安全吗?还是应该改进?此代码是否受SQL注入保护?(PHP(

if (isset($_POST['mailSet'])) {
$asd=filter_input(INPUT_POST, 'TypeM', FILTER_SANITIZE_NUMBER_INT);
$zxc=filter_input(INPUT_POST, 'mailFor', FILTER_SANITIZE_NUMBER_INT);
global $wpdb;
try {
$wpdb->get_row($wpdb->prepare("UPDATE mail_sttng set setting_val=%d
WHERE setting=1
", $asd));
$wpdb->get_row($wpdb->prepare("UPDATE mail_sttng set setting_val=%d
WHERE setting=2
", $zxc));

bla bla...

我想当然地认为$wpdb来自WordPress项目。

然后,正如文档所解释的,这些占位符的目的就是防止SQL注入。

因此,您可以认为您的代码对SQL注入是安全的。

就我个人而言,我喜欢尽快将我的价值观转化为正确的类型,现在也许这就是filter_input的目的,我对此一无所知。

$asd = (int) filter_input(INPUT_POST, 'TypeM', FILTER_SANITIZE_NUMBER_INT);
$zxc = (int) filter_input(INPUT_POST, 'mailFor', FILTER_SANITIZE_NUMBER_INT);

可能不会。你可能应该这样做:

$wpdb->get_row($wpdb->prepare("UPDATE mail_sttng set setting_val=%d
WHERE setting=1
", htmlspecialchars($asd)));

如果setting_val不是字符串字段,您可能需要验证是否也通过了正确的数据类型

相关内容

  • 没有找到相关文章