2011-04-29 4 views
2

C#으로 작성된 .NET 프로그램에 의해 폭격을 당하면 사용자가 대량으로 내 양식에 $ _POST 필드를 제출하고있는 것입니다 ... 구체적으로 연락처 양식입니다 .

정확히 이. NET 프로그램에서 발생하거나 심지어 C++ 프로그램이 될지 모르겠다. 잘 모르겠다. 그러나 나는 이것을 반대하는 생각을 가지고있었습니다.

내 첫 번째 아이디어는 $_SESSION이 필요하지만 ... 그 $_POST 폭탄 프로그램이 사용자가 만든 핸들을 만들거나 $_SESSION을 수락하겠습니까? C#의 WebClient 클래스를 사용하여 경험이있는 사람이 $_SESSION'S을 처리했는지 또는 사용자가 무엇을 사용하고 있는지 알 수는 있습니다. 나는 $에 _SESSION을 처리하지 않은 사용자의 프로그램이 내가 그들에게 사이트를 비활성화 할 수 있습니다 어쨌든 할 수있는 경우 $_SESSION['submitted'] = $count;

if($_SESSION['submitted'] > 5) { 
    //display captcha or block from site 
} else { 
    $count++; 
} 

$count++;의 다른 부분을 사용하여 고려하고? 그래서 그들은 내 연락 양식을 공격 할 수 없습니까?

답변

2

항상로 CAPTCHA를 설정할 것입니다. 각 POST 후에 세션 쿠키를 삭제하면 제한 재설정을 통해 완전히 새로운 클린 세션을 시작합니다.

이와 같이 사용자를 차단하는 유일한 방법은 해당 IP 주소를 조절하는 것입니다. 분당 특정 연결 시도 횟수로 제한하십시오. 분당 많은 요청 횟수보다 제출할 수 없습니다. 이제 호스트 사이를 건너 뛸 수 있다면 더 큰 문제가 생길 수 있습니다. 다른 곳으로 이동하는 모습을보아야합니다. 이동 한 것을 알게 될 때까지 404는 모두 얻을 수 있습니다.

단점은 공통 프록시를 사용하거나 모든 것을 프록시하는 AOL과 같은 일부 사용자라면 다른 합법적 인 사용자도 차단할 수 있다는 것입니다.

+0

에 동의합니다. 사용자 검색에서 좋은 아이디어를 얻으려면 웹에서 제공되는 모든 마케팅 사용자 추적 코드 스 니펫을 확인할 수 있다고 덧붙입니다. 예를 들어 http://panopticlick.eff.org/에서 수집 한 모든 데이터를보고 고유 방문자 해시에 대해 생각해보십시오. – regilero

+0

IP 주소를 어떻게 조절할 수 있습니까? ATM 내 새로운 방법은 IP 및 PHP 시간을 MySQL 데이터베이스에 삽입하고 12 시간마다 cron 작업을 실행하고 12 시간이 넘은 IP를 삭제합니다. 데이터베이스에 동일한 IP가 5 개있는 경우 연결이 차단됩니다. – Kyle

+0

여전히 요청으로 서버를 망칠 수 있습니다. 가장 좋은 곳은 방화벽 일 것이므로 요청은 심지어 아파치에도 미치지 못합니다. 리눅스를 사용하고 있다면, 포트 22 대신 포트 80에서 작동하도록 수정 된 https://forum.openwrt.org/viewtopic.php?pid=34494에 나와있는 iptables 명령이 완벽하게 작동합니다. 나는 가정용 컴퓨터에서 SSH 스캔을 차단하기 위해 이와 비슷한 것을 사용합니다. –

0

그럼 당신이 (브라우저 확인 등 같은) 로그인 폼 또는 다른 형태의 인증과 같은 몇 가지 보안 장벽을 넣을 수 있습니다

을 제외하고는 내가 들어오는 IP를 차단하는 것입니다 생각할 수있는 생각에서, 다시 좋은 아이디어가 아닐 수도 있습니다.

0

보안 문자를 구현하면 어떨까요?

0

내가 틀렸을 때 누군가가 나를 고칠 수 있지만 세션 ID (매우 긴 해시 문자열)와 함께 쿠키 (또는 다른 방법)를 저장합니다. 세션 변수는 서버에 저장됩니다. 따라서 SESSION을 처리하더라도 SESSION 변수가 저장된 서버를 제어 할 수는 없습니다. 내가 당신이라면

는, 나는 악의적 인 사용자에 대한 사소한 세션 잠금을 무시 ...