我有很多用户输入$_GET
and $_POST
......此刻我总是写mysql_real_escape_string($_GET['var'])
..
我想知道你是否可以制作一个功能来保护、转义和清理$_GET
/$_POST
立即数组,因此您不必每次处理用户输入等时都处理它。
我正在考虑一个功能,例如cleanMe($input)
,在它里面,它应该做mysql_real_escape_string
, htmlspecialchars
, strip_tags
, stripslashes
(我认为这就是让它干净和安全的全部)然后返回$input
.
那么这可能吗?制作一个适用于所有人的功能$_GET
and $_POST
,所以你只会这样做:
$_GET = cleanMe($_GET);
$_POST = cleanMe($_POST);
因此,稍后在您的代码中,当您使用例如$_GET['blabla']
or $_POST['haha']
,它们被固定、剥离等等?
自己尝试了一下:
function cleanMe($input) {
$input = mysql_real_escape_string($input);
$input = htmlspecialchars($input, ENT_IGNORE, 'utf-8');
$input = strip_tags($input);
$input = stripslashes($input);
return $input;
}
通用卫生功能的想法是一个破碎的概念。
有one适合各种目的的正确卫生方法。在字符串上不加区别地运行它们通常会破坏它——转义 SQL 查询的一段 HTML 代码会破坏它在网页中的使用,反之亦然。应注意卫生就在之前使用数据:
在运行数据库查询之前。正确的卫生方法取决于您使用的图书馆;他们被列在如何防止 PHP 中的 SQL 注入?
htmlspecialchars()
用于安全的 HTML 输出
preg_quote()
用于正则表达式
escapeshellarg()
/ escapeshellcmd()
用于外部命令
等等等等
使用“一刀切”的卫生功能就像对一株植物使用五种剧毒杀虫剂,而根据定义,该植物只能含有一种虫子 - 却发现你的植物被第六种虫子侵扰,而其中没有一种虫子。杀虫剂的作用。
始终使用一种正确的方法,最好是在将数据传递给函数之前直接使用。Never除非需要,否则混合方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)