Example #1
0
 public static function check(Request $request)
 {
     if (($formVarLen = $request->count()) == 0) {
         return true;
     }
     foreach ($request as $key => $val) {
         if (in_array($key, self::$knownFields)) {
             $formVarLen--;
         }
     }
     if ($formVarLen <= 0) {
         return true;
     }
     if (($checksum = $request->getVar(self::CHECKSUM)) == '') {
         $request->clear();
         if (Cfg::get('jb_tamper_detail', false)) {
             return 'Checksum Variable Missing from the request.';
         } else {
             self::$log->error('Checksum Variable Missing from the request: ' . $_SERVER['SCRIPT_NAME']);
             return false;
         }
     } else {
         if (!is_array($checksum)) {
             $request->clear();
             if (Cfg::get('jb_tamper_detail', false)) {
                 return 'Checksum Variable not an array.';
             } else {
                 self::$log->error('Checksum Variable not an array: ' . $_SERVER['SCRIPT_NAME']);
                 return false;
             }
         } else {
             if (count($checksum) != 2) {
                 $request->clear();
                 if (Cfg::get('jb_tamper_detail', false)) {
                     return 'Checksum Variable not 2 elements.';
                 } else {
                     self::$log->error('Checksum Variable not 2 elements: ' . $_SERVER['SCRIPT_NAME']);
                     return false;
                 }
             } else {
                 if (!empty($checksum[0])) {
                     $keys = explode(',', $checksum[0]);
                     $allVariablesJoined = $checksum[0];
                     foreach ($keys as $key) {
                         $allVariablesJoined .= $request->getRaw($key);
                     }
                 } else {
                     $allVariablesJoined = '';
                 }
                 if (md5($allVariablesJoined) != $checksum[1]) {
                     $request->clear();
                     if (Cfg::get('jb_tamper_detail', false)) {
                         return 'Checksum failed md5(' . $allVariablesJoined . ')<>' . $checksum[1];
                     } else {
                         self::$log->error('The checksum has failed. The request variables have been tampered: ' . $_SERVER['SCRIPT_NAME']);
                         return false;
                     }
                     self::$log->error('The checksum has failed. The request variables have been tampered. ' . $_SERVER['SCRIPT_NAME']);
                 } else {
                     return true;
                 }
             }
         }
     }
 }