2017-12-31 35 views
1

나는 해시 계산기의 교과 과정을 연구 중이다. 이것은 기본 웹 페이지에 사용자가 해시를 제출하고 텍스트를 가져오고 절을 바꿀 수있는 양식 두 개를 포함하는 간단한 웹 응용 프로그램입니다.은 간단한 해시 계산기 PHP 애플리케이션의 CSRF 위협 요소입니까?

응용 프로그램이 사소한 경우에도 내부에 보안 기능을 구현해야합니다. SQL과 XSS 공격을 완화 할 수있었습니다. 그런 다음 두 가지 취약성 평가 스캐너 "Acunetix"와 "Nessus"를 사용하기로 결정했습니다. 두 스캐너 모두 내 응용 프로그램이 CSRF에 취약하다는 것을 보여 주었고이 공격에 대한 보호는 PHP에서 세션 및 무작위 토큰을 구현하는 것입니다.

나는이 공격과 그 공격에 대해 읽었습니다. 그러나, 나는이 공격이 주로 이미 인증 된 사용자와 쿠키에 초점을 맞추고 있다는 사실로 인해 혼란 스러웠습니다. 해시 및 일반 텍스트를 반환하고 복구하는 응용 프로그램에 세션 및 토큰을 포함해야합니까? 그렇다면 어떻게해야하며 잠재적 인 위협이 있습니까?

대단히 감사합니다!

+0

CSRF 보호는 실제로 모든 요청이 양식에서 오는 것인지 확인하는 방법입니다 (아무도 다른 곳에서 백엔드에 게시 할 수 없습니다). CSRF가 없으면 누구나 자신의 프런트 엔드로 백 엔드를 사용할 수 있습니다. 따라서 실제로 CSRF를 추가하는 것이 좋습니다. 누군가가 자신의 사이트/스크립트에서 백 엔드에 게시하는 것을 신경 쓰지 않으면 CSRF가 필요하지 않습니다. –

+0

@MagnusEriksson Anti-CSRF는 MitM/프록시를 보호하지 않습니다. – user2864740

+0

@ user2864740 물론 아닙니다. 모든 것을 막을 수있는 보호 장치가 하나만있는 것은 아닙니다. 그러나 이와 같은 응용 프로그램에서는 중간 공격의 사람이 실제로 큰 위협이 아니라고 생각합니다. –

답변

1

짧은 답변 : 당신은 당신이 '사용자'(인증)을하지 않기 때문에 당신은 CSRF 토큰이 필요하지 않습니다,하지 아니. 없다

+1

쿠키 기반 세션 상태는 CSRF의 영향을 받기 쉽습니다. 이 경우 세션 상태가없는 것처럼 들립니다. (대부분의 "민감한 작업"은 인증을 통해 보호되지만 인증은 엄격하게 전제 조건이 아닙니다.) – user2864740

+1

대부분 시간은 있지만이 경우에는 CSF 보호가 필요하지 않습니다. – azjezz

+0

이 경우 결론에 동의합니다. – user2864740

2

귀하의 질문에 귀하가 맞습니다. CSRF 보호는 의식적인 결정이어야합니다. 적어도 응용 프로그램에서이 작업을 수행하는 것이 좋을 수도 있습니다. 여기에는 그 이유가 나와 있습니다.

CSRF는 악의적 하나를 방문하는 동안 응용 프로그램에서 실수로 수행하는 작업에 사용자를 속일 수있는 다른 웹 사이트에 관한 것입니다. 사실, 대부분의 경우 사용자가 이미 로그인했음을 악용하지만, 반드시 그런 것은 아닙니다. 응용 프로그램에 대한

, 즉시 마음에 와서 두 CSRF 관련 위협은 다음과 같습니다

  • 해싱 큰 무지개 테이블에 매우 CPU를 많이, 또한 다른 방법으로, 검색 작업도 될 수있다 자원 집약적. 이것 자체로 이미 서비스 거부 위험에 처해 있지만, 너무 많은 요청으로 소스 IP를 필터링하는 등의 방법으로이를 막을 수 있습니다. 그러나 앱이 CSRF에 취약한 경우 트래픽이 많은 웹 사이트는 방문객이 앱에서 이러한 작업을 수행하도록하여 효과적으로 분산 된 DoS를 수행 할 수 있습니다.

  • 앱용 API가 있고 CSRF에 대한 보호 기능이없는 경우 (예 : 액세스 제어 허용 원점 : *), 다른 웹 사이트는 최대한 많은 쿼리를 실행할 수 있습니다 해시 또는 검색을 원할 경우 수입이 감소하거나 서비스 거부가 발생할 수 있음).

어쩌면 이러한 정확한 사용 사례에 적용되지 않습니다, 난 그냥 어떤 종류의 세션 상태가 없다하더라도, CSRF 실제로 문제가 될 수 있으며,이 도구는 체계적 등을 발견 할 수 있습니다 싶어 잠재적 위협을 위협 모델링이라고합니다.

+0

CORS는 브라우저 XHR/intrapage 자원 요청에만 적용됩니다. 이렇게하면 CSRF의 특정 클래스를 완화시킬 수 있지만 CSRF를 해결하지는 못합니다. 따라서 "값 비싼 GET 작업"이 있다고 상상하면서 CSRF가이를 방지하는 방법은 무엇입니까? – user2864740

+0

@ user2864740 나는 그것을 제안 할 의도가 없었습니다. 필자는 CSRF가 기존의 의미에서 세션 상태 및 상태 변경없이이 응용 프로그램에서 문제가 될 수있는 두 가지 시나리오를 제안했습니다. GET 작업은 본질적으로 CSRF에 취약하므로 GET으로 CSRF 보호를 실제로 구현할 수는 없습니다. –

+0

다음은 CSRF가 아닙니다. :} 응용 프로그램 강화에 대한 더 나은 사례를 사용하는 것에 반대하는 것은 아니지만 (CORS/DDoS를 제기하는 것은 매우 중요한 요소입니다) CSRF는 매우 좁은 정의를 가지고 있습니다. – user2864740