2013-01-17 12 views
-1

질문 표가 있는데이 표의 기본 키는 자동 증분이있는 "id"입니다. 이제는 질문 관리를위한 제어판을 만들고 있습니다. 제어판의 기능 중 하나는 삭제 질문입니다. 이제 내 질문 : 질문 태그의 기본 키를 HTML 태그의 식별자로 클라이언트에 보내 사용자가 HTML 태그를 클릭하여 질문을 삭제할 때 질문의 기본 키를 서버에 보내 질문을 삭제하도록합니다. 보안면에서 위험한가? 더 나은 해결책이 있습니까?기본 키를 사용하여 테이블에서 삭제할 레코드를 식별해야합니까?

+8

귀하의 질문에 따라하기가 매우 어렵지만 "기본 키를 사용하여 테이블에서 삭제하려는 레코드를 식별해야합니까?" 그 대답은 "예"입니다. 보안과 관련하여 요청이 유효한 사용자에 의해 만들어지고 그 사용자에게 질문을 삭제할 권한이 있는지를 판별하는 것은 서버 스크립트의 책임입니다. – GordonM

답변

2

삭제할 레코드를 식별하기 위해 기본 키와 다른 고유 한 열 집합을 사용하는 것과 관련된 질문 인 경우 데이터베이스 수준의 보안에는 차이가 없습니다.

예를 들어

다음과 같은 열이있는 테이블이있는 경우 :

id - primary key 
subject - 
serial_number - 
... 
other fields 

subject + serial_number 또는 각 행에 대해 고유 한, 그것은 당신이 대

delete from table where id = '&id' 

을 여부를 보안의 관점에서 차이가 없습니다를

delete from table where serial_number = '&1' and subject = '&2' 

기본 키를 사용하여 삭제하는 것이 좋을 수도 있습니다. b e 빨리.

그러나이 h 제는 html 페이지에서 트리거되기 때.에 페이지를 보호하고 우발적 인 h 제를 방지하는 f}을 반드시 볼 필요가 있지만 기본 키 대 다른 필드의 사용에 영향을주지 않습니다 레코드를 삭제합니다.

1

<a href="YOUR_URL_TO_DELETE/ID_TO_DELETE">YOUR_ANCHOR</a> 

나는이 방법으로 발생하는 주요 문제 thah이 링크를 따라 할 수있는 모든 스크립트가 테이블에서 레코드를 삭제할 수 있습니다를 사용하려는 것처럼 보인다. POST 메소드가있는 양식을 사용하고 요청을하기 전에 사용자에게 확인 대화 상자를 표시하십시오.

+2

질문은 매우 어렵습니다.하지만 "상태를 변경하는 작업에 GET을 사용해야합니까?"라는 질문에 답을 얻을 수도 있습니다. 대답은 "아마도 그렇지 않습니다"입니다.HTTP 사양은 서버 상태를 변경하는 GET 요청을 금지하지 않지만 강력하게 권장하지 않습니다. – GordonM

2

모든 요청은 ID, POST 또는 웹 서비스 호출이있는 HTTP GET 형식으로 제공되는지 여부에 관계없이 유효성을 검사해야합니다.

제대로 만들어진 웹 사이트는 IP 주소 추적 및 요청 빈도 분석에 의존하는 봇 (bot)에 대한 보호가 필요합니다. 숨겨진 ID는 어떤 사람들이 쉘 스크립트를 작성하여 일련의 객체를 얻지 못하도록하지만 어떤 종류의 무차별 대입 공격을 사용하여 웹 사이트를 악용 할 수있는 다른 방법이 있습니다.

ICQ ID는 사용자와 관련되어 있으며 사용자의 기본 식별 수단이기 때문에 유용합니다. 이는 다른 서비스, 프로그램 또는 웹 사이트에서 사용하지 않는 사용자 인증에 대한 유일한 접근 방식입니다.

결론 그렇습니다. 스크래퍼와 DDoS 공격 및 데이터 보호와 많은 다른 것들에 대해 걱정할 필요가 있지만, 숨겨진 ID는 이러한 문제를 제대로 해결하지 못합니다.

관련 문제