这样足够安全吗?还是应该改进?此代码是否受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不是字符串字段,您可能需要验证是否也通过了正确的数据类型