php - PHP 选择选项值保护
问题描述
我在文件 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}
,如何验证输入是否可以接受?
解决方案
如果问题是:“我如何确保插入 {$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
}
如果这不是您真正想要的,请多解释一下“受保护”的含义。
推荐阅读
- nativescript - Nativescript RadListView 按需加载请求失败
- google-cloud-firestore - Firestore 导出到 BigQuery 的计划加载
- php - Optimizing Find nearest sum of numbers in array to a given number
- azure - Azuer:从表中获取行键值并将其显示为令牌编号
- html - 模态关闭后文本模糊
- html - 使用 CSS 选择器选择 HTML 中的特定元素
- amazon-web-services - 从 VPC Lambda 访问 RDS
- cocoscreator - 视频播放器在 Cocos Creator 中总是排在首位?
- javascript - 您在没有 `onChange` 处理程序的情况下为表单字段提供了 `checked` 属性。这将呈现一个只读字段
- angular - 定义 formBuilder formArray - TSLint 错误