PHP에서 Captcha 스크립트에 대한 임의의 단어를 얻는 가장 좋은 방법

StackOverflow https://stackoverflow.com/questions/1216010

  •  06-07-2019
  •  | 
  •  

문제

나는 새로운 보안 문자 스크립트를 작업 중이며 예를 들어 Words 목록을 작성하고 싶다는 점을 제외하고는 거의 완료됩니다.

높은 트래픽 사이트 에서이 목록을 처리 할 수있는 가장 좋은 방법은 무엇입니까?

모든 부하의 텍스트 파일에서 단어를 읽으십시오.
배열에 보관하십시오
다른?

도움이 되었습니까?

해결책

고정 된 단어 목록을 사용하면 보안관이 변형의 수를 단지 단지로 제한하기 때문에 보포인이 약해질 수 있습니다. N! / (N - 케이)! 옵션. 와 함께 N = 300 단어와 케이= 캡처 당 2 단어 2 단어는 단어의 시간에 관계없이 89700 옵션 일뿐입니다.

4 개의 임의의 문자 (AZ) 시퀀스를 사용한다면 더 많은 옵션을 얻을 수 있습니다 (정확히 N^케이 = 26^4 = 456976).

다른 팁

300 백 단어를 선택하기를 원한다면 모든 것을 직선 PHP 코드로 배열에 넣고 무작위로 꺼내는 것입니다. 그것은 최고의 성능이 될 것입니다.

성능을위한 최상의 옵션

  1. Disc IO가 대부분의 시간을 느리게 만드는 것이기 때문에 최상의 성능을 얻으려면 임의의 숫자 목록 (APC 또는 Memcache => Google/StackoverFlow 검색)에 최상의 성능을 얻는 것이 가장 좋습니다. 이를 위해서는 충분한 메모리 (> = 128MB)가있는 상자가 있어야하며 소프트웨어 (APC/Memcache)를 설치할 수 있습니다. 높은 트래픽 사이트에서 좋은 성과를 원한다면 기꺼이 지불해야합니다 !!!

  2. 공유 호스팅 제공 업체에있는 경우 (그러나 최상의 성능을 얻지 못할 경우), 모든 요구 사항이 디스크에서 파일을 가져 오기 때문에 단어를 동일한 파일에 배열에 넣는 것이 가장 좋습니다.

임의의 단어를 반환합니다

럭키처럼 간단한 랜드 기능 호출로 임의의 숫자를 가져올 수 있다고 말했듯이

return ($words[rand(0, count($words)-1);

여기서 $ word는 모든 단어가있는 배열입니다.

VPS 호스팅

이것들은 Google을 사용하여 찾은 저렴한 VPS 호스팅이지만 고성능 사이트에 가장 적합한 VPS 호스팅을 찾는 연구를 더해야한다고 생각합니다.

300 단어 대신, 단순히 임의의 숫자를 생성하여 표시 할 수 있습니다. 목록이 필요하지 않거나 목록을로드하거나 목록 관리 ....

초당 몇 개의 로그온 만 처리해야합니까? 이것은 최적화에 시간을 보내기에 적합한 장소처럼 보이지 않습니다. 임의의 단어는 괜찮을 것입니다. 특히 단어 목록이 300 단어에 불과한 경우에는 괜찮습니다.

나는 a로 시작할 것이다 단순한 텍스트 파일, 한 줄 당 한 단어, 그리고 단순한 일을하는 것만으로도

$words = file("wordlist.txt");
return ($words[rand(0, count($word)-1);

그리고 그것이 실제로 병목 현상으로 판명 된 경우에만 무작위 fseek () 또는 다른 "고성능"트릭을 수행하도록 변경합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top