private static function type_default($key, $encData)
 {
     // Can only send the first 32 characters of the key
     $key = Security_Hash::value($key, 32, 64);
     // Get the initialization vector (appends a public salt)
     $vectorSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
     $vector = mcrypt_create_iv($vectorSize, MCRYPT_RAND);
     // Encrypt the data
     $encData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $encData, MCRYPT_MODE_CBC, $vector);
     return "|" . base64_encode($vector . $encData);
 }
 public static function type_default($key, $encryptedData)
 {
     // Only the first 32 characters of the key were sent, and done so with the Security_Hash::value method
     $key = Security_Hash::value($key, 32, 64);
     // Begin decryption
     $encryptedData = base64_decode($encryptedData);
     $vectorSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
     $vector = substr($encryptedData, 0, $vectorSize);
     $encryptedData = substr($encryptedData, $vectorSize);
     $decryptedData = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encryptedData, MCRYPT_MODE_CBC, $vector);
     // mcrypt pads the return string with nulls, so we need to trim the end
     return rtrim($decryptedData, "");
 }
예제 #3
0
 public static function delete($cookieName)
 {
     // Prepare Values
     $cookieName = Security_Hash::value($cookieName, 5, 62) . '-' . $cookieName;
     $timestamp = time();
     // Remove Global Cookie Values
     if (isset($_COOKIE[$cookieName])) {
         unset($_COOKIE[$cookieName]);
     }
     if (isset($_COOKIE[$cookieName . "_key"])) {
         unset($_COOKIE[$cookieName . "_key"]);
     }
     // Cookie_Server vs. Cookie_Site differences
     $domain = get_called_class() == "Cookie_Server" ? BASE_DOMAIN : FULL_DOMAIN;
     // Remove desired Cookie and its associated key
     setcookie($cookieName, "", $timestamp - 360000, "/", URL_PREFIX . $domain);
     setcookie($cookieName . "_key", "", $timestamp - 360000, "/", URL_PREFIX . $domain);
 }
예제 #4
0
 public static function submitted($uniqueIdentifier = "")
 {
     // Make sure all of the right data was sent
     if (isset($_POST['formguard_key']) && isset($_POST['formguard_salt']) && isset($_POST['tos_soimportant']) && isset($_POST['human_answer'])) {
         // Make sure the honeypots weren't tripped
         if ($_POST['tos_soimportant'] != "") {
             return false;
         }
         if ($_POST['human_answer'] != "") {
             return false;
         }
         // Get Important Data
         $keys = explode("-", $_POST['formguard_key'], 3);
         // Prepare identifier that will make forms unique to each user
         $uniqueIdentifier .= SITE_SALT;
         // Add User Agent
         $uniqueIdentifier .= isset($_SESSION['user_agent']) ? md5($_SESSION['user_agent']) : "";
         // Add Auth Token
         $uniqueIdentifier .= isset($_SESSION[SITE_HANDLE]['auth_token']) ? $_SESSION[SITE_HANDLE]['auth_token'] : "";
         // Add CSRF Token
         //$uniqueIdentifier .= (isset($_SESSION[SITE_HANDLE]['csrfToken']) ? $_SESSION[SITE_HANDLE]['csrfToken'] : "");
         // Generate the Hash
         $hash = Security_Hash::value($uniqueIdentifier . $_POST['formguard_salt'] . $keys[0] . $keys[1], 82, 72);
         // Make sure the hash was valid
         if ($keys[2] == $hash) {
             // Prevent Most Accidental Resubmissions
             $mini = substr($hash, 0, 10);
             if (!isset($_SESSION[SITE_HANDLE]['trackForm'])) {
                 $_SESSION[SITE_HANDLE]['trackForm'] = '';
             }
             if (strpos($_SESSION[SITE_HANDLE]['trackForm'], "~" . $mini) !== false) {
                 return false;
             }
             $_SESSION[SITE_HANDLE]['trackForm'] = "~" . $mini . substr($_SESSION[SITE_HANDLE]['trackForm'], 0, 110);
             // If the submission wasn't a resubmit, post it
             return true;
         }
     }
     return false;
 }
예제 #5
0
 public static function getData($origClickVal)
 {
     // Make sure all of the right data was sent
     if (!isset($_GET['lslt']) or !isset($_GET['lhsh']) or !isset($_GET['lcv']) or !isset($_GET['ldata'])) {
         return array();
     }
     /// Decode the prepared click value and confirm it matches
     if (!($clickVal = base64_decode($_GET['lcv'])) or $origClickVal != $clickVal) {
         return array();
     }
     // Prepare identifier that will make forms unique to each user
     $siteSalt = SERVER_SALT;
     // Add User Agent
     $siteSalt .= isset($_SESSION['user_agent']) ? md5($_SESSION['user_agent']) : "";
     // Add Auth Token
     $siteSalt .= isset($_SESSION[SITE_HANDLE]['auth_token']) ? $_SESSION[SITE_HANDLE]['auth_token'] : "";
     // Add CSRF Token
     //$siteSalt .= (isset($_SESSION[SITE_HANDLE]['csrfToken']) ? $_SESSION[SITE_HANDLE]['csrfToken'] : "");
     // Generate the Hash
     $hash = Security_Hash::value($siteSalt . $_GET['lslt'] . $clickVal, 15, 62);
     // Make sure the hash was valid
     if ($_GET['lhsh'] == $hash) {
         // Prevent Page Refreshes
         if (!isset($_SESSION[SITE_HANDLE]['trackLink'])) {
             $_SESSION[SITE_HANDLE]['trackLink'] = '';
         }
         if (strpos($_SESSION[SITE_HANDLE]['trackLink'], "~" . $hash) !== false) {
             return array();
         }
         $_SESSION[SITE_HANDLE]['trackLink'] = "~" . $hash . substr($_SESSION[SITE_HANDLE]['trackLink'], 0, 110);
         $someData = Security_Decrypt::run($hash, $_GET['ldata']);
         // If the submission wasn't a resubmit, post it
         return json_decode($someData, true);
     }
     return array();
 }
예제 #6
0
 private static function prepIndexHash($entityName, $entityID, $attribute)
 {
     return Security_Hash::value($entityName . $entityID . $attribute, 16);
 }