七
16
无论哪种编程语言,过滤用户的输入总是很有必要的,asp流行的时代各种注入漏洞不断暴露出来。 一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转义。
echo $_GET['postdata'] ;
这个例子有可能输出:
这是一个明显的安全隐患,除非你保证你的用户都正确的输入。
如何修复 :
我们需要将”< ",">“,”and” 等转换成正确的HTML表示(< , >‘, and “),函数htmlspecialchars 和 htmlentities()正是干这个活的。
正确的方法:
echo htmlspecialchars($_GET['username'], ENT_QUOTES);
最简单的防止sql注入的方法(php+mysql中)在php.ini中将magic_quotes设置为On,但是不是所有的输入都是从$_GET, $_POST或 $_COOKIE中的得到的!
如何修复:
和在最简单的防止sql注入的方法(php+mysql中)中一样我还是推荐使用mysql_real_escape_string()函数
正确做法:
$sql = "UPDATE table SET
name='.mysql_real_escape_string($name).'
WHERE id='.mysql_real_escape_string ($id).'";
mysql_query($sql);
?>
如此一来,就能极大的降低程序的隐含漏洞
thank you for this article!
[回复]