此代码是否受 SQL 注入保护?
Is this code protected for SQL injection?
这样够安全吗?还是应该改进?此代码是否受 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->get_row($wpdb->prepare("UPDATE mail_sttng set setting_val=%d
WHERE setting=1
", htmlspecialchars($asd)));
如果 setting_val 不是字符串字段,您可能需要验证是否也传递了正确的数据类型
我想当然地认为$wpdb
是from the WordPress project。
然后作为explained by the documentation,这些占位符的目的就是防止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);
这样够安全吗?还是应该改进?此代码是否受 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->get_row($wpdb->prepare("UPDATE mail_sttng set setting_val=%d
WHERE setting=1
", htmlspecialchars($asd)));
如果 setting_val 不是字符串字段,您可能需要验证是否也传递了正确的数据类型
我想当然地认为$wpdb
是from the WordPress project。
然后作为explained by the documentation,这些占位符的目的就是防止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);