2013-10-11 2 views
0

SQL 인젝션 허용 방법이 있는지 알고 싶었습니다.SQL 인젝션을 안전하게 허용하는 방법

예 : 테이블 (들)/데이터베이스 (들)

제한 권한 왜 물어?

고용주는 신청자의 기술을 시험 할 방법을 고안하고 싶었습니다. 한 가지 제안은 SQL 주입을 통해 이력서 제출을 허용하는 것이 었습니다.

의견이 있으십니까? 제안?

enter image description here

+4

나는 당신의 상사가 기술적 인 것들을 전문가들에게 맡겨야한다고 생각합니다. –

+0

내가 잘못 생각하지는 않지만 사람들은 SQL 인젝션을 막는 방법을 찾고 있으며 사장님은 그것을 가질 방법을 찾고 있습니다! 이상한 :) –

+0

당신이 일하는 재미있는 회사. 제한된 역할을 가진 독립된 인스턴스가 트릭을 수행해야한다고 생각합니다. –

답변

1

당신은 역할을 사용할 수 있습니다. 데이터베이스에 연결하는 데 사용되는 웹 응용 프로그램 (또는 기타)에 대한 역할을 만듭니다. INSERT 만 허용하고 적용을 위해 필요한 테이블에 액세스하려면이 역할을 제한하십시오. 응용 프로그램을 통해 데이터베이스에 액세스 할 수있는 신청자는 SQL 주입 만 사용하여 이력서를 추가 할 수 있습니다.

SQL에서 더 재능있는 사람이 역할의 권한을 늘리는 방식으로 주사를 사용할 수 있습니다. 그러나 특정 테이블에만 액세스가 제한되어 있고 CREATE 또는 GRANT 권한이없는 사용자는 새 역할을 만들 수 없다고 생각합니다.

여기에 당신이 시작하는 역할에 대한 몇 가지 정보입니다 :

Adding Roles to MySQL with MySQL Workbench

Creating Roles in PostgreSQL

GRANT command - 테이블, 데이터베이스 사용자에게 권한을 추가하는 데 사용 등이 페이지는 PostgreSQL을위한이, 하지만 MySQL은 매우 비슷합니다 (this SO answer 참조)

+0

신청자는 SQL 주입에 대한 필요없이 자신의 이력서를 삽입 할 수 없습니까? –

+1

신청자가 위치를 게시 할 때 경고를받을 이름과 이메일을 입력하는 양식이있는 경우. 직접 이력서를 업로드하는 방법은 없지만,이 양식은 db에 대한 연락처를 제공합니다. 다음 만화와 유사한, 당신은'매트 '를 둘지도 모르다); INSERT resume ... '을 입력하십시오. 나는 그들이 당신을 위해 무엇을 사용하도록 설정했는지 또는 어떤 지시가 주어 졌는지 정말로 분명하지 않습니다. – Matt

+0

또는 신청자가 자신의 정보를 입력 할 수있는 별도의 데이터베이스를 만들 수도 있습니다. 신청자는 초기 제한된 접근을 우회하고 고용주가 필요로하는 정보를 잃지 않고 원하는만큼의 피해를 줄 수 있습니다. 그런 다음 정보를 다른 곳에 저장하는 스크립트를 작성하여 (한 명의 신청자가 다른 이력서를 제거하지 않도록) 데이터베이스 권한을 초기 제한된 액세스로 다시 설정하십시오. – Matt

-1

사람들의 능력을 테스트하는 이유는 데이터베이스를 만들 때 감당할 수있는 데이터가 있기 때문입니다. 잃다. ColdFusion 또는 PHP 또는 java 또는 .net 또는 해당 데이터베이스에 연결하는 다른 유형의 페이지에 게시하는 양식을 설정하십시오.

양식에 텍스트 영역을 입력하고 제출 버튼을 클릭하십시오. 양식 대상 페이지에서 텍스트 영역에 입력 한 내용을 기록하십시오. 로그가 데이터베이스와 어떻게 비교되는지 확인하십시오.

그런 다음 마음을 기쁘게 시험하십시오.

관련 문제