一尘不染

终极清洁/安全功能

php

从我有很多的用户输入$_GET$_POST…此刻我总是写mysql_real_escape_string($_GET['var'])..

我想知道您是否可以创建一个可以立即保护,转义和清理$_GET/ $_POST数组的函数,因此您不必在每次使用用户输入等时都进行处理。

我在想一个功能,例如cleanMe($input),和它里面,它应该做的mysql_real_escape_stringhtmlspecialcharsstrip_tagsstripslashes(我想这是所有做它的清洁与安全),然后返回$input

那有可能吗?制作一个适用于$_GET和的函数$_POST,因此您只需执行以下操作:

$_GET  = cleanMe($_GET);
$_POST = cleanMe($_POST);

因此,在以后的代码中,当您使用eg $_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;
}

阅读 328

收藏
2020-05-26

共1个答案

一尘不染

通用卫生功能的概念是一个破损的概念。

一个 适用于各种用途的权利卫生法。在字符串上不加选择地运行它们通常会破坏它-为SQL查询转义一段HTML代码会破坏它在网页中的使用,反之亦然。
使用数据 之前, 应立即进行卫生处理

  • htmlspecialchars() 用于安全的HTML输出

  • preg_quote() 用于正则表达式

  • escapeshellarg()/ escapeshellcmd()用于外部命令

  • 等等等

使用“一刀切”的卫生功能就像在植物上使用五种剧毒杀虫剂,该杀虫剂定义上仅包含一种虫子-只是发现您的植物受到第六种虫害,而第六种却没有的杀虫剂起作用。

始终使用一种正确的方法,最好是直接使用,然后再将数据传递给函数。除非需要,否则 不要 混合使用方法。

2020-05-26