이전에 작성한 코드를 다시 살펴보면 끔찍한 결과가 나왔습니다. 나는 데이터베이스에 기록을 삭제할 때마다 , 나는 다음과 같이했다 :아약스 보안?
$.post("deleteAction.do",{recordId:10});
나는 악의적 인 사용자가 직접 내 데이터베이스 작업의 URL을 방문 막을 수 없습니다 : 이런 종류의 솔루션 무엇
deleteAction.do?recordId=10
을 문제가 뭐야?
이전에 작성한 코드를 다시 살펴보면 끔찍한 결과가 나왔습니다. 나는 데이터베이스에 기록을 삭제할 때마다 , 나는 다음과 같이했다 :아약스 보안?
$.post("deleteAction.do",{recordId:10});
나는 악의적 인 사용자가 직접 내 데이터베이스 작업의 URL을 방문 막을 수 없습니다 : 이런 종류의 솔루션 무엇
deleteAction.do?recordId=10
을 문제가 뭐야?
정말로 당신의 데이터와 당신이 서버 측에서하는 점검에 달려 있습니다. 예를 들어. 사용자가 해당 레코드에서 삭제 작업을 수행 할 수 있는지 확인하면 큰 문제는 아닙니다. 그렇지 않으면 사용자가 다른 사용자의 데이터도 삭제할 수 있음을 의미합니다. 내 제안은 :
서버 측 코드는 현재 로그인 한 사용자를 확인하고 항목을 삭제할 권한이 있는지 확인해야합니다. 이렇게하면 낯선 사람이 악의적 인 행동을하지 않게되지만 웹 응용 프로그램에 권한 부여/권한 부여 항목을 추가해야합니다.
이 문제를 방지하는 유일한 방법은 사이트에서 인증을 사용하고 일부 사용자 만 이러한 작업을 수행 할 수있게하는 것입니다. 모든 공개 활동은 악의적 인 사용자가 액세스 할 수 있습니다.
Ajax와 관련이 있는지 여부는 중요하지 않습니다. URI가 서버에서 민감한 데이터를 노출하거나 중요한 데이터를 노출하는 경우이를 보호해야합니다. 대개 어떤 형태의 인증 + 승인. 쿠키 기반의 기술은 정상입니다. 구현의 세부 사항은 백엔드 시스템의 설계에 따라 다릅니다.
제쳐두고 non-safe actions에 대한 GET 요청을 허용해서는 안됩니다. 요청이 POST이므로 문제의 GET 예를 사용하면 "This is a POST request?"를 추가해야합니다. 서버 측 스크립트를 확인하십시오. 이 방법만으로는 보호가 충분하지 않으므로 악의있는 사용자는 임의의 GET 요청과 거의 같은 방식으로 임의의 POST 요청을 할 수 있습니다. (어느 것이 우리를 Authen/Authz로 데려옵니다)