对于用户提交表单,不要相信只能提交表单让你选择的那么几项,对于有心的用户来说,
客户端能够提交任何数据作为$_POST['value']的值,为了正确过滤数据,我们需要利用
switch语句来处理:
<?php
$clear = array();
switch($_POST['select']) {
case 'select1':
case 'select2':
......
......
......
$clear['select'] = $_POST['select']
break;
default: ...
break;
}
?>
对于由用户在客户端输入的数据,永远不能假定用户都是正确的,说不定他会故意输入错误
的数据,来引起你系统产生错误,一定要有过滤机制:
假如一个用户名只能由子母和数字组成:
<?php
$clear = array();
if(ctype_alnum($_POST['username'])) {
$clear['username'] = $_POST['username'];
}
?>
尽管在这里可以使用正则表达式,但使用PHP内置函数更好一些,它产生错误的可能性远比你
自己所写而出错的可能性要低得多。
对于一些重要操作函数,要尽量地隐藏,不必要的一定不要暴露,能够加密最好。
严格作好防注入攻击的准备
对于代码与外部系统的接合,一定要注意数据的来源和目的地,随时能够跟踪数据。
代码能精简就不要复杂,复杂性的提高也让代码的内在危险性高了不少。
客户端能够提交任何数据作为$_POST['value']的值,为了正确过滤数据,我们需要利用
switch语句来处理:
<?php
$clear = array();
switch($_POST['select']) {
case 'select1':
case 'select2':
......
......
......
$clear['select'] = $_POST['select']
break;
default: ...
break;
}
?>
对于由用户在客户端输入的数据,永远不能假定用户都是正确的,说不定他会故意输入错误
的数据,来引起你系统产生错误,一定要有过滤机制:
假如一个用户名只能由子母和数字组成:
<?php
$clear = array();
if(ctype_alnum($_POST['username'])) {
$clear['username'] = $_POST['username'];
}
?>
尽管在这里可以使用正则表达式,但使用PHP内置函数更好一些,它产生错误的可能性远比你
自己所写而出错的可能性要低得多。
对于一些重要操作函数,要尽量地隐藏,不必要的一定不要暴露,能够加密最好。
严格作好防注入攻击的准备
对于代码与外部系统的接合,一定要注意数据的来源和目的地,随时能够跟踪数据。
代码能精简就不要复杂,复杂性的提高也让代码的内在危险性高了不少。