这是逃避多个领域的正确方法吗?

问题描述:

我刚刚雇人做一个安全的形式,并且粘贴下面只是一个大的代码片段:这是逃避多个领域的正确方法吗?

 $_POST = escape_all($_POST); 

     $some1 = $_POST['some1']; 
     $some2 = $_POST['some2']; 
     $some3 = $_POST['some3']; 
     $some4 = $_POST['some4']; 
     $some5 = $_POST['some5']; 
     $some6 = $_POST['some6']; 
     $some7 = $_POST['some7']; 
     $some8 = $_POST['some8']; 

那是正道还是我要补充mysql_real_escape_string();到所有的变量?

+1

取决于'escape_all'是什么。 – Amber 2012-04-11 03:24:26

+0

告诉你的“雇佣”关于'mysqli' – 2012-04-11 03:26:12

+1

你真的更好*不*使用$ _POST搞砸了,而是使用编写SQL的技术来避免转义(例如命名参数)。 – Eli 2012-04-11 03:49:10

这看起来像他写了一个自定义函数来逃避。只要escape_all函数调用mysql_real_escape字符串,它将在技术上起作用,但我不会说这是因为几个原因而优选的解决方案。

首先,你要小心不要在其他地方逃跑,因为它很容易导致双重逃跑,这可能会导致其他问题。

此外,如果性能是一个问题,您最终可能会转义大量不需要转义的数据,这取决于具体情况。

是的,使用mysqli而不是mysql通常是可取的。

+0

谢谢。我也检查了整个代码,并找不到函数escape_all。所以不知道他到底在做什么。我想我可以手动将它添加到变量。 – AAA 2012-04-11 03:30:59

+0

不客气!如果代码没有给你提供某种错误或通知,那么该函数必须在某处。无论如何,手动转义只需要输入什么输入是一个比一般逃脱整个POST超全局更理想的解决方案。 – Mansfield 2012-04-11 03:34:17