我做了一个简单的函数来防止SQL注入和XXS的安全这是我的代码,对此有什么建议吗?这对安全性来说足够好吗?
function mres($input){
if(get_magic_quotes_gpc()){
$input=stripslashes($input);
}
$input=htmlentities($input, ENT_COMPAT, 'UTF-8');
return mysql_real_escape_string($input);
}
这
至少在两个方面是错误的:
- 如果可以的话,完全
magic_quotes
转。 至少你没有使用它,但$input
可能不是标量 -
htmlentities
用于显示,而不是存储。 切勿为存储而编码! -
mysql_*
函数已弃用。 也不能保证您在调用时将具有打开的 mysql 连接(必需)。
http://us3.php.net/manual/en/function.mysql-real-escape-string.php
看看你实际上在做什么:
魔术报价是所有传入数据的批量转义,这使您容易受到攻击,因为仅靠转义并不能使您的数据以任何方式"安全"。
所以,你正在清理这些散装逃生......然后再次应用完全相同的转义:)