==== SecurityControls ==== === Διαχείριση Συνεδρίας === === Αλλαγή αναγνωριστικού συνεδρίας μετά την αυθεντικοποίηση === $sr = session_regenerate_id(); if ($sr === true) { echo '

Your session was regenerated

'; } else { echo '

Your session was not regenerated. Is the session started?'; } Με χρήση ESAPI: $sr = ESAPI::getHTTPUtilities()->changeSessionIdentifier(); if ($sr === true) { echo '

Your session was regenerated

'; } else { echo '

Your session was not regenerated. Is the session started?'; } Καθαρισμός cookie. $name = 'το όνομα του cookie' setcookie($name, '', 1, '', ''); Με χρήση ESAPI: $req = new SafeRequest; ESAPI::getHTTPUtilities()->killAllCookies($req); === Έλεγχος Παραμέτρων === === Κανονικοποίηση === Η κανονικοποίηση ασχολείται με τον τρόπο με τον οποίο τα συστήματα μετατρέπουν τα δεδομένα από τη μία μορφή στην άλλη. Συγκεκριμένα, είναι η διαδικασία μετατροπής μίας μη αξιόπιστης εισόδου από την αρχική αναπαράστασή της σε απλούστερη μορφή, ωστε να μπορεί να ελεγθεί ως προς το περιεχόμενο, με χρήση μαύρης λίστας. (Μόνο για έλεγχο) Με χρήση ESAPI: $input = $_GET['input']; $codecArray = array(); array_push( $codecArray, new HTMLEntityCodec() ); array_push( $codecArray, new PercentCodec() ); $encoderInstance = new DefaultEncoder( $codecArray ); $inputToCheck = encoderInstance->canonicalize($input); === Χρήση Λευκής Λίστας === Αν ο τύπος των αναμενόμενων δεδομένων εισόδου ανήκει σε κάποια συγκεκριμένη κατηγορία (πχ αλφαριθμητικά δεδομένα), τότε θα πρέπει να ελέγχετε αν τα μη αξιόπιστα δεδομένα ανήκουν στην κατηγορία αυτή. is_numeric() Checks a variable for numeric content. is_array() Checks if a variable is an array. strlen() Returns a string‘s length. ctype_alnum() alphanumeric characters – A-Z, a-z, 0-9 ctype_alpha() alphabetic characters – A-Z, a-z ctype_cntrl() control characters – e.g. tab, line feed ctype_digit() numerical characters – 0-9 ctype_graph() characters creating visible output e.g. no whitespace ctype_lower() lowercase letters – a-z ctype_print() printable characters ctype_punct() punctuation characters – printable characters, but not digits, letters or whitespace, e.g. .,!?:;*&$ ctype_space() whitespace characters – e.g. newline, tab ctype_upper() uppercase characters – A-Z ctype_xdigit() hexadecimal digits – 0-9, a-f, A-F FILTER_VALIDATE_INT Checks whether the input is an integer numeric value. FILTER_VALIDATE_BOOLEAN Checks whether the input is a boolean value. FILTER_VALIDATE_FLOAT Checks whether the input is a floating point number. FILTER_VALIDATE_REGEXP Checks the input against a regular expression. FILTER_VALIDATE_URL Checks whether the input is a URL. FILTER_VALIDATE_EMAIL Checks whether the input is a valid email address. FILTER_VALIDATE_IP Checks whether the input is a valid IPv4 or IPv6 Με χρήση ESAPI: $context = 'test'; $input = $_GET['input']; $allowNull = false; $type = 'SSN'; $type = 'URL'; $type = 'IPAddress'; $type = 'Email'; $rs= ESAPI::getValidator()->isValidInput($context, $input, $type, $maxLength, $allowNull); $format = 'F j, Y'; $rs= ESAPI::getValidator()->isValidDate($context, $input, $format, $allowNull); $rs= ESAPI::getValidator()->isValidCreditCard($context, $input, $allowNull); $rs= ESAPI::getValidator()->isValidDirectoryPath($context, $input, $allowNull); $minValue = -999999999; $maxValue = 999999999; $rs= ESAPI::getValidator()->isValidNumber($context, $input, $minValue, $maxValue, $allowNull); $rs= ESAPI::getValidator()->isValidInteger($context, $input, $minValue, $maxValue, $allowNull); $rs= ESAPI::getValidator()->isValidDouble($context, $input, $minValue, $maxValue, $allowNull); $list=array('one','two'); $rs= ESAPI::getValidator()->isValidListItem($context, $input, $list); $maxLength= 100; $rs= ESAPI::getValidator()->isValidPrintable($context, $input, $maxLength, $allowNull); $rs= ESAPI::getValidator()->isValidHTML($context, $input, $maxLength, $allowNull); === Τοποθέτηση μή έμπιστης εισόδου σε HTML δομές === Πρέπει να αποφεύγεται η εισαγωγή δεδομένων μέσα σε δομές με ετικέτες τύπου "