php - Avoid requests that take much time Apache -
i programm class validates data browsers , 1 of methods validates length of strings, came mind: if sends big string 2 millions of characters or more (or whatever) ?
if use strlen() count bytes, count last bytes. waste count bytes.
after thinking while, made this:
   class validator     {      static public function verify_str_length($str, $min, $max)      {           $i;        $counter = $min;        $msg = "";       // looling until null char found       //        for($i=$min-1;$i<$max;$i++) {           if(!isset($str[$i])) {             if($i == ($min -1)) {                 // if first iteration                 // find null char early.                 // $i starts minimum length allowed, string                 // length lower short                 $msg = 'too short string';                 return -1;             }              return 0;          }        }        if(isset($str[$i])) {          // if reach max , keep without finding null char          // string length higher $max           $msg = 'too long string';            return 1;       }        return 0;        }       //     /*  others methods           ..... */    } note not need number of characters in string, if higher $min , lower $max. discard others chars.
my question is: idea instead of using strlen() ?
is there way configurate apache stop execution if server takes more x seconds in processing request ?
or can use both options?
thanks in advance!
you can use php's post_max_size directive limit amount of content submitted. careful setting because if have file uploads, have fit within size well.
http://php.net/manual/en/ini.core.php#ini.post-max-size
to limit amount of time spent parsing input data, may use max_input_time.
http://php.net/manual/en/info.configuration.php#ini.max-input-time
to limit execution time, use max_execution_time.
http://php.net/manual/en/info.configuration.php#ini.max-execution-time
you may set these in .htaccess, so:
php_value post_max_size 1m php_value max_execution_time 30 php_value max_input_time 5 for validation, should use php's filter functions, example:
$content = filter_input( input_post, 'content', filter_validate_regexp, [ 'options' => ['regexp' => '/^[\w-]{1,64}$/']] ); this ensure if $_post['content'] not composed of letters, digits, underscores or hyphens, , not between 1 , 64 characters long, not accepted.
Comments
Post a Comment