mysqli_real_escape_string
은 문자를 이스케이프합니다. 그것은 위생적이지 않습니다.
값이 게시되면 해당 시간이 삭제됩니다.
정수 값을 사용하는 것이 좋습니다. 이메일 주소 대신 사용자 이름으로 전화 번호를 요청합니다. 그런 다음 정규식을 사용하여 숫자 값을 제외하고 모두 제거합니다.
$number = preg_replace('/[^\d]/','',$_POST['number']);
난 그냥 사용 공백, 쉼표, 대시와 정수를 찾고 있어요 경우 :
$number = intval($_POST['number']);
당신은 쿼리에서 사용하는 값을 규정해야한다.
$sql = sprintf("SELECT * FROM `Client` WHERE `Number` = %d", $id);
나는 또한 제출 된 모든 것을 봅니다. SQL Injection 공격에서 일반적으로 사용되는 기호 및 단어를 확인합니다.
$strike1 = 1 + preg_match_all('/\x3F/',$SAVE_ID,$matches, PREG_SET_ORDER); //)
$strike2 = preg_match_all('/[\x21-\x2F]|[\x3A-\x40]|[\x5B-\x60]|[\x7B-\x7F]/',$SAVE_ID,$matches, PREG_SET_ORDER);
$strike3 = preg_match_all('/\x28/',$SAVE_ID,$matches, PREG_SET_ORDER); //)
$strike4 = preg_match_all('/\x29/',$SAVE_ID,$matches, PREG_SET_ORDER); // (
$strike5 = preg_match_all('/COALESCE|0x|like|regex|mid|select|delete|drop|insert|do|call|replace|update|infile|lock|set|from|into|show|table|kill|reset/i',$SAVE_ID,$matches, PREG_SET_ORDER);
내가 너무 많은 위반을 볼 때, 나는 IP 주소를 금지합니다.
@mysql_unbuffered_query("INSERT INTO `Banned` (`ip`, `TimeStamp`,`Strike3`, `Attributes`) VALUES ('$ip', CURRENT_TIMESTAMP, $alert);");
비밀번호 오류도 감시합니다. 짧은 시간 내에 실패한 시도가 너무 많거나 시도 간격이 너무 짧으면 (사람이 아닐 때) 나는 IP를 금지합니다.
니스. 파업 시스템에서 사용한 기능에 대해 좀 더 자세히 설명해 줄 수 있습니까? –