<?php /* TODO: - custom_encode_data and custom_decode_data functions use the same algorythm, need to optimize them */ class security { //Constructor (does nothing atm) private function __construct() { } public static function check_request_data($data='') { if (isset($data) && strlen($data)>0) return true; else return false; } public static function secure_request_data($data, $level='') { if ($level) { switch ($level) { case 1: $data = preg_replace("/[^A-Za-z]/", "", $data); //Letters only break; case 2: $data = preg_replace("/[^0-9]/", "", $data); //Numbers only break; case 3: $data = preg_replace("/[^A-Za-z0-9]/", "", $data); //Letters and numbers only break; default: $data = $data; //Default - no security break; } } else { $data = $data; //If no level is set - no security } return $data; } /* FORM FIELDS VALIDATION : START */ public static function validate_data($data, $type) { switch ($type) { case 'email': return preg_match('/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD', $data); break; } return false; } /* FORM FIELDS VALIDATION : END */ /* FILTER AND PREPARE CHAT MESSAGE : START */ // Currently only some Lithuanian cursewords are filtered. Add any words necessary. public static function filter_chat($message) { $cursewords[] = 'blet'; $cursewords[] = 'blia'; $cursewords[] = 'bibi'; $cursewords[] = 'biby'; $cursewords[] = 'bybi'; $cursewords[] = 'byby'; $cursewords[] = 'huj'; $cursewords[] = 'keks'; $cursewords[] = 'kekš'; $cursewords[] = 'kurv'; $cursewords[] = 'kurw'; $cursewords[] = 'qrva'; $cursewords[] = 'qrwa'; $cursewords[] = 'pisa'; $cursewords[] = 'pist'; $cursewords[] = 'pidar'; $cursewords[] = 'pydar'; $cursewords[] = 'pider'; $cursewords[] = 'pyder'; $cursewords[] = 'pizd'; $cursewords[] = 'pyzd'; $cursewords[] = 'šud'; $cursewords[] = 'šūd'; $cursewords_count = sizeof($cursewords); for($i=0; $i<$cursewords_count; $i++){ //$message = preg_replace('/'.$cursewords[$i].'/ie',"str_repeat('*',strlen('$0'))",$message); $message = preg_replace_callback('/('.$cursewords[$i].')/', function($matches) { return str_repeat('*', strlen($matches[0])); },$message); } $message = htmlentities(strip_tags($message)); return $message; } /* FILTER AND PREPARE CHAT MESSAGE : END */ public static function custom_encode_data($data) { $data_length = mb_strlen($data, 'UTF-8'); $data_arr = []; $new_data = ''; for ($i=0; $i<$data_length; $i++) { $data_arr[] = mb_substr($data, $i, 1, 'UTF-8'); } foreach($data_arr as $k=>$v) { if ($v=='A') { $new_data .= str_replace('A', 'Z', $v); } elseif ($v=='B') { $new_data .= str_replace('B', 'Y', $v); } elseif ($v=='C') { $new_data .= str_replace('C', 'X', $v); } elseif ($v=='D') { $new_data .= str_replace('D', 'W', $v); } elseif ($v=='E') { $new_data .= str_replace('E', 'V', $v); } elseif ($v=='F') { $new_data .= str_replace('F', 'U', $v); } elseif ($v=='G') { $new_data .= str_replace('G', 'T', $v); } elseif ($v=='H') { $new_data .= str_replace('H', 'S', $v); } elseif ($v=='I') { $new_data .= str_replace('I', 'R', $v); } elseif ($v=='J') { $new_data .= str_replace('J', 'Q', $v); } elseif ($v=='K') { $new_data .= str_replace('K', 'P', $v); } elseif ($v=='L') { $new_data .= str_replace('L', 'O', $v); } elseif ($v=='M') { $new_data .= str_replace('M', 'N', $v); } elseif ($v=='N') { $new_data .= str_replace('N', 'M', $v); } elseif ($v=='O') { $new_data .= str_replace('O', 'L', $v); } elseif ($v=='P') { $new_data .= str_replace('P', 'K', $v); } elseif ($v=='Q') { $new_data .= str_replace('Q', 'J', $v); } elseif ($v=='R') { $new_data .= str_replace('R', 'I', $v); } elseif ($v=='S') { $new_data .= str_replace('S', 'H', $v); } elseif ($v=='T') { $new_data .= str_replace('T', 'G', $v); } elseif ($v=='U') { $new_data .= str_replace('U', 'F', $v); } elseif ($v=='V') { $new_data .= str_replace('V', 'E', $v); } elseif ($v=='W') { $new_data .= str_replace('W', 'D', $v); } elseif ($v=='X') { $new_data .= str_replace('X', 'C', $v); } elseif ($v=='Y') { $new_data .= str_replace('Y', 'B', $v); } elseif ($v=='Z') { $new_data .= str_replace('Z', 'A', $v); } elseif ($v=='a') { $new_data .= str_replace('a', 'z', $v); } elseif ($v=='b') { $new_data .= str_replace('b', 'y', $v); } elseif ($v=='c') { $new_data .= str_replace('c', 'x', $v); } elseif ($v=='d') { $new_data .= str_replace('d', 'w', $v); } elseif ($v=='e') { $new_data .= str_replace('e', 'v', $v); } elseif ($v=='f') { $new_data .= str_replace('f', 'u', $v); } elseif ($v=='g') { $new_data .= str_replace('g', 't', $v); } elseif ($v=='h') { $new_data .= str_replace('h', 's', $v); } elseif ($v=='i') { $new_data .= str_replace('i', 'r', $v); } elseif ($v=='j') { $new_data .= str_replace('j', 'q', $v); } elseif ($v=='k') { $new_data .= str_replace('k', 'p', $v); } elseif ($v=='l') { $new_data .= str_replace('l', 'o', $v); } elseif ($v=='m') { $new_data .= str_replace('m', 'n', $v); } elseif ($v=='n') { $new_data .= str_replace('n', 'm', $v); } elseif ($v=='o') { $new_data .= str_replace('o', 'l', $v); } elseif ($v=='p') { $new_data .= str_replace('p', 'k', $v); } elseif ($v=='q') { $new_data .= str_replace('q', 'j', $v); } elseif ($v=='r') { $new_data .= str_replace('r', 'i', $v); } elseif ($v=='s') { $new_data .= str_replace('s', 'h', $v); } elseif ($v=='t') { $new_data .= str_replace('t', 'g', $v); } elseif ($v=='u') { $new_data .= str_replace('u', 'f', $v); } elseif ($v=='v') { $new_data .= str_replace('v', 'e', $v); } elseif ($v=='w') { $new_data .= str_replace('w', 'd', $v); } elseif ($v=='x') { $new_data .= str_replace('x', 'c', $v); } elseif ($v=='y') { $new_data .= str_replace('y', 'b', $v); } elseif ($v=='z') { $new_data .= str_replace('z', 'a', $v); } else { $new_data .= $v; } $new_data .= strtoupper(chr(64+rand(0,26))); } return base64_encode($new_data); } public static function custom_decode_data($data) { $data = base64_decode($data); $data_length = mb_strlen($data, 'UTF-8'); $data_arr = []; $new_data = ''; for ($i=0; $i<$data_length; $i++) { $data_arr[] = mb_substr($data, $i, 1, 'UTF-8'); } $i=0; foreach($data_arr as $k=>$v) { $i++; if($i%2!=0) { if ($v=='A') { $new_data .= str_replace('A', 'Z', $v); } elseif ($v=='B') { $new_data .= str_replace('B', 'Y', $v); } elseif ($v=='C') { $new_data .= str_replace('C', 'X', $v); } elseif ($v=='D') { $new_data .= str_replace('D', 'W', $v); } elseif ($v=='E') { $new_data .= str_replace('E', 'V', $v); } elseif ($v=='F') { $new_data .= str_replace('F', 'U', $v); } elseif ($v=='G') { $new_data .= str_replace('G', 'T', $v); } elseif ($v=='H') { $new_data .= str_replace('H', 'S', $v); } elseif ($v=='I') { $new_data .= str_replace('I', 'R', $v); } elseif ($v=='J') { $new_data .= str_replace('J', 'Q', $v); } elseif ($v=='K') { $new_data .= str_replace('K', 'P', $v); } elseif ($v=='L') { $new_data .= str_replace('L', 'O', $v); } elseif ($v=='M') { $new_data .= str_replace('M', 'N', $v); } elseif ($v=='N') { $new_data .= str_replace('N', 'M', $v); } elseif ($v=='O') { $new_data .= str_replace('O', 'L', $v); } elseif ($v=='P') { $new_data .= str_replace('P', 'K', $v); } elseif ($v=='Q') { $new_data .= str_replace('Q', 'J', $v); } elseif ($v=='R') { $new_data .= str_replace('R', 'I', $v); } elseif ($v=='S') { $new_data .= str_replace('S', 'H', $v); } elseif ($v=='T') { $new_data .= str_replace('T', 'G', $v); } elseif ($v=='U') { $new_data .= str_replace('U', 'F', $v); } elseif ($v=='V') { $new_data .= str_replace('V', 'E', $v); } elseif ($v=='W') { $new_data .= str_replace('W', 'D', $v); } elseif ($v=='X') { $new_data .= str_replace('X', 'C', $v); } elseif ($v=='Y') { $new_data .= str_replace('Y', 'B', $v); } elseif ($v=='Z') { $new_data .= str_replace('Z', 'A', $v); } elseif ($v=='a') { $new_data .= str_replace('a', 'z', $v); } elseif ($v=='b') { $new_data .= str_replace('b', 'y', $v); } elseif ($v=='c') { $new_data .= str_replace('c', 'x', $v); } elseif ($v=='d') { $new_data .= str_replace('d', 'w', $v); } elseif ($v=='e') { $new_data .= str_replace('e', 'v', $v); } elseif ($v=='f') { $new_data .= str_replace('f', 'u', $v); } elseif ($v=='g') { $new_data .= str_replace('g', 't', $v); } elseif ($v=='h') { $new_data .= str_replace('h', 's', $v); } elseif ($v=='i') { $new_data .= str_replace('i', 'r', $v); } elseif ($v=='j') { $new_data .= str_replace('j', 'q', $v); } elseif ($v=='k') { $new_data .= str_replace('k', 'p', $v); } elseif ($v=='l') { $new_data .= str_replace('l', 'o', $v); } elseif ($v=='m') { $new_data .= str_replace('m', 'n', $v); } elseif ($v=='n') { $new_data .= str_replace('n', 'm', $v); } elseif ($v=='o') { $new_data .= str_replace('o', 'l', $v); } elseif ($v=='p') { $new_data .= str_replace('p', 'k', $v); } elseif ($v=='q') { $new_data .= str_replace('q', 'j', $v); } elseif ($v=='r') { $new_data .= str_replace('r', 'i', $v); } elseif ($v=='s') { $new_data .= str_replace('s', 'h', $v); } elseif ($v=='t') { $new_data .= str_replace('t', 'g', $v); } elseif ($v=='u') { $new_data .= str_replace('u', 'f', $v); } elseif ($v=='v') { $new_data .= str_replace('v', 'e', $v); } elseif ($v=='w') { $new_data .= str_replace('w', 'd', $v); } elseif ($v=='x') { $new_data .= str_replace('x', 'c', $v); } elseif ($v=='y') { $new_data .= str_replace('y', 'b', $v); } elseif ($v=='z') { $new_data .= str_replace('z', 'a', $v); } else { $new_data .= $v; } } } return $new_data; } public static function format_message($message) { if (isset($message) && strlen($message)>0) { if (substr($message, 0, 6) == 'ERROR:') { $message = '<span class="error">'.substr($message, 6).'</span>'; } else { $message = '<span class="success">'.$message.'</span>'; } return $message; } else { return false; } } } ?>