从我有很多的用户输入$_GET和$_POST…此刻我总是写mysql_real_escape_string($_GET['var'])..
$_GET
$_POST
mysql_real_escape_string($_GET['var'])
我想知道您是否可以创建一个可以立即保护,转义和清理$_GET/ $_POST数组的函数,因此您不必在每次使用用户输入等时都进行处理。
我在想一个功能,例如cleanMe($input),和它里面,它应该做的mysql_real_escape_string,htmlspecialchars,strip_tags,stripslashes(我想这是所有做它的清洁与安全),然后返回$input。
cleanMe($input)
mysql_real_escape_string
htmlspecialchars
strip_tags
stripslashes
$input
那有可能吗?制作一个适用于$_GET和的函数$_POST,因此您只需执行以下操作:
$_GET = cleanMe($_GET); $_POST = cleanMe($_POST);
因此,在以后的代码中,当您使用eg $_GET['blabla']或时$_POST['haha'],它们是否已固定,剥离等?
$_GET['blabla']
$_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; }
通用卫生功能的概念是一个破损的概念。
有 一个 适用于各种用途的权利卫生法。在字符串上不加选择地运行它们通常会破坏它-为SQL查询转义一段HTML代码会破坏它在网页中的使用,反之亦然。 在 使用数据 之前, 应立即进行卫生处理
htmlspecialchars() 用于安全的HTML输出
htmlspecialchars()
preg_quote() 用于正则表达式
preg_quote()
escapeshellarg()/ escapeshellcmd()用于外部命令
escapeshellarg()
escapeshellcmd()
等等等
使用“一刀切”的卫生功能就像在植物上使用五种剧毒杀虫剂,该杀虫剂定义上仅包含一种虫子-只是发现您的植物受到第六种虫害,而第六种却没有的杀虫剂起作用。
始终使用一种正确的方法,最好是直接使用,然后再将数据传递给函数。除非需要,否则 不要 混合使用方法。