PHP选择选项值保护

问题描述 投票:0回答:1

我在文件tpl中创建了样本选择选项代码,用于提交表单到数据库,但我没有足够的经验知道字段值{$submit_field1}是否受到保护!

PHP

$main_smarty->assign('Tags_Allow', htmlspecialchars($Tags_Allow));
$main_smarty->assign('submit_field1', $content->field1);
if(isset($_POST['field1'])){$content->field1 = sanitize($_POST['field1'], 4, $Tags_Allow);}

    function sanitize($var, $santype = 1, $allowable_tags = ''){
        if ($santype == 1) {
            return strip_tags($var, $allowable_tags = '');
        }
        elseif ($santype == 2) {
            return htmlentities(strip_tags($var, $allowable_tags),ENT_QUOTES,'UTF-8');
        }
        elseif ($santype == 3) {
            return addslashes(strip_tags($var, $allowable_tags));
        }
        elseif ($santype == 4) {
            return stripslashes(preg_replace_callback('/<([^>]+)>/is', 
        function($m) { 
            return '<'.sanitize($m[1],5).'>';
            }, strip_tags($var, $allowable_tags)));
        }
        elseif ($santype == 5) {
            return preg_replace_callback('/\son\w+\s*=/is',
        function($m) {
            return '';
            },$var);
        }
    }

模板tpl

<select id="country" name="field1">
<option value="{$submit_field1}">Please Select</option>
<option value="United State">
United State
</option>
<option value="France">
France
</option>
<option value="Russia">
Russia
</option>
</select>

从SQL注入黑客中插入{$submit_field1}的保护值还有什么要做的,如何在输入上验证它是否可以接受?

php mysqli smarty
1个回答
0
投票

如果问题是:“我如何确保插入{$ submit_field1}的值受到保护,这意味着它只是我们设置的值而不是更改值的人,那么我会在输入中验证它是否可接受。

您可以通过在提交表单时针对一组已批准的值测试值来检查此问题:

$values = [];
$values = ["United States","France","Russia"];
if (in_array($_POST['field1'], $values)) {
    // Allow the form to submit
} else {
    // Tell the user it's not allowed
}

如果那不是你真正想要的,那么请向“受保护”解释一下你的意思。

© www.soinside.com 2019 - 2024. All rights reserved.