웹 사이트 용으로 작성된 일부 오래된 (2009) 코드가 특정 상황에서 검색 쿼리에 의해 $ _GET 변수로 SQL을 저장한다는 것을 발견했습니다!
검색을 수행하면 세부 정보가 POSTED 된 다음 위생 처리되고 결과가 MySQL의 LIMIT 절로 페이지가 매겨집니다. 하나 이상의 페이지 (예 : +30 결과)가있는 경우 페이지는 SQL 문을 포함하는 GET var로 HTML의 앵커 링크입니다.
저는 알고 있습니다.이 방법은 절대적으로 아닙니다. 우연히 본 코드예요. 이 문제를 해결해야합니다.
그래서 나는 그것을 고정을 소독하고 SQL을 다시로드하기 위해 다른 방법을 사용하되했습니다
내 질문은 따라서이다 :
페이지가 썸네일 이미지, 모든 데이터에 관한 데이터를 출력 명명 된 배열 var (원래 절은 SELECT *
절)로 출력되므로 다른 사람이 GET 변수를 남용하면 페이지 자체는
이라는 열만 출력합니다. DB를 사용하여 DB에서 행을 삭제할 수있었습니다. 학대를 가져 오려면, 결과가 어떤 retu를 포함하지 않으면 남용이 효과적이라고 생각하고 싶습니다. rned output (DELETE와 같은)하지만 나는 모른다. 그래서 사용자가 GET 절에 아무 것도 입력 할 수 있지만 코드화 된 내용 (즉, 30 행 배열의 명명 된 열) 만 표시되는 출력을 얻는다면 -이 구멍이 생길 수있는 다른 남용은 무엇입니까?
더 자세한 사항 : 코드는 MySQLi
그들이 원했던 거의 모든 것을 데이터베이스에서 수행 할 수있었습니다. – Jordy
페이지에서의 출력이 정의 된 열 등일 뿐이라는 것을 고려하여 할 수있는 것과 같이 이것을 확장 할 수 있습니까? – Martin
매우 위험합니다. http://stackoverflow.com/questions/60174/how-can -i-prevent-sql-injection-in-php, http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work –