Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 筛选get和post值_Php_Post_Filter_Get - Fatal编程技术网

Php 筛选get和post值

Php 筛选get和post值,php,post,filter,get,Php,Post,Filter,Get,我在其中调用我的主页框架_ui.php,我需要auth.php,在这里我有一个过滤函数 function filter($data) { // normalize $data because of get_magic_quotes_gpc $dataNeedsStripSlashes = get_magic_quotes_gpc(); if ($dataNeedsStripSlashes) { $data = stripslashes($data); }

我在其中调用我的主页框架_ui.php,我需要auth.php,在这里我有一个过滤函数

function filter($data)
{
   // normalize $data because of get_magic_quotes_gpc
   $dataNeedsStripSlashes = get_magic_quotes_gpc();
   if ($dataNeedsStripSlashes) {
       $data = stripslashes($data);
   }
   // normalize $data because of whitespace on beginning and end
   $data = trim($data);
   // strip tags
   $data = strip_tags($data);
   // replace characters with their HTML entitites
   $data = htmlentities($data);
   // mysql escape string    
   $data = mysql_real_escape_string($data);
   return $data;
}
在每个包含get和post变量的页面上,我都做了一个:(并调用my framework.php)

如果我将上面的函数设置为函数并在每个页面上调用它,该函数是否仍能正常运行

function filter_all() {
// filter GET values
foreach ($_GET as $key => $value) {
    $get[$key] = filter($value);
}
// filter post
foreach ($_POST as $key => $value) {
    $post[$key] = filter($value);
}
}

我知道这不是最安全的方法,但是我想知道这类事情是否可能并且不会对我的代码产生负面影响。

您只需要做一些调整,以确保“过滤”值对代码的其余部分可用。有两种方法可以做到这一点,将它们标记为
global
或返回它们;可能第二种选择通常被认为更干净。下面是一个例子:

function filter_all() {
    $get  = array();
    $post = array();

    // filter GET values
    foreach ($_GET as $key => $value) {
        $get[$key] = filter($value);
    }
    // filter post
    foreach ($_POST as $key => $value) {
        $post[$key] = filter($value);
    }
    return array(
            'get'  => $get,
            'post' => $post);
}

$aFilteredInput = filter_all();
$get  = $aFilteredInput['post'];
$post = $aFilteredInput['post'];

您只需进行一些调整,以确保“过滤”值对代码的其余部分可用。有两种方法可以做到这一点,将它们标记为
global
或返回它们;可能第二种选择通常被认为更干净。下面是一个例子:

function filter_all() {
    $get  = array();
    $post = array();

    // filter GET values
    foreach ($_GET as $key => $value) {
        $get[$key] = filter($value);
    }
    // filter post
    foreach ($_POST as $key => $value) {
        $post[$key] = filter($value);
    }
    return array(
            'get'  => $get,
            'post' => $post);
}

$aFilteredInput = filter_all();
$get  = $aFilteredInput['post'];
$post = $aFilteredInput['post'];
filter\u all()函数不返回任何内容,也不修改$\u GET和$\u POST全局变量,因此在函数完成运行这些原始变量后,foreach循环将实际上是相同的。如果计划使用$\u GET/$\u POST,则应直接操作$\u GET/$\u POST或全局$GET/$POST,或者返回两者的组合。除此之外,你的计划没有什么负面影响

如果每次都要这样做,那么最好不要创建函数,只包含一个文件(如framework_ui.php),该文件只执行循环并过滤变量

zerkms是正确的,尽管您的过滤函数并不理想,因为它不安全,而且事实上,如果您计划重新显示用户提交的信息,mysql\u real\u escape\u字符串将导致问题(除其他外)

要引用OWASP ESAPI项目页面:

不要编写自己的安全控件!当涉及到为每个web应用程序或web服务开发安全控制时,重新发明轮子会导致浪费时间和巨大的安全漏洞。OWASP企业安全API(ESAPI)工具包帮助软件开发人员防范与安全相关的设计和实现缺陷

filter\u all()函数不返回任何内容,也不修改$\u GET和$\u POST全局变量,因此在函数完成运行这些原始变量后,foreach循环将实际上是相同的。如果计划使用$\u GET/$\u POST,则应直接操作$\u GET/$\u POST或全局$GET/$POST,或者返回两者的组合。除此之外,你的计划没有什么负面影响

如果每次都要这样做,那么最好不要创建函数,只包含一个文件(如framework_ui.php),该文件只执行循环并过滤变量

zerkms是正确的,尽管您的过滤函数并不理想,因为它不安全,而且事实上,如果您计划重新显示用户提交的信息,mysql\u real\u escape\u字符串将导致问题(除其他外)

要引用OWASP ESAPI项目页面:

不要编写自己的安全控件!当涉及到为每个web应用程序或web服务开发安全控制时,重新发明轮子会导致浪费时间和巨大的安全漏洞。OWASP企业安全API(ESAPI)工具包帮助软件开发人员防范与安全相关的设计和实现缺陷


你的
过滤器
功能很糟糕,对与“安全性”几乎无关的输入应用随机函数。你的问题不清楚“我想知道这种事情是否可能,不会对我的代码产生负面影响。”-你为什么不试试呢?同意@zerkms。也就是说,您需要从函数返回
$get
$post
,否则它们将退出作用域。我会的,但无法知道(据我所知)检查字符串是否被转义。过滤函数来自@sberry,你说的正是我所想的:如果
$get
post
是全局函数,那么应该这样声明,如果不是,它将只存在于函数范围内。你的
过滤
函数很糟糕,将随机函数应用于与“安全性”几乎无关的输入你的问题不清楚“我想知道这种事情是否可行,不会对我的代码产生负面影响。”-你为什么不试试呢?同意@zerkms。也就是说,您需要从函数返回
$get
$post
,否则它们将退出作用域。我会的,但无法知道(据我所知)检查字符串是否被转义。过滤函数来自@sberry,你说的正是我所想的:如果
$get
post
是全局函数,那么应该声明为全局函数,如果不是全局函数,那么它将只存在于函数范围内。感谢owasp链接,我将不得不研究它。也谢谢你的解释!没问题,亚历克斯,祝你好运!另外,主网站可能有更多的资源,以及在感谢owasp链接,我将不得不研究它。也谢谢你的解释!没问题,亚历克斯,祝你好运!另外,可能有更多资源的主站点位于