2013-03-03 1 views
0

이 말은 조금 우스 꽝 스러운데 제발 저를 껴안으십시오.하지만 방금 지난 주 또는 2 개월 동안 PHP 및 jQuery의 기초를 배웠습니다. 이것은 약간의 경험이있는 분이라면 누구나 쉽게 알 수 있습니다. 공유 할 수있는 정보에 감사드립니다.API 쿼리 및 기타 보안 문제가 포함 된 SQL 삽입

cURL 호출을 통해 SQL 데이터베이스를 쿼리하는 사용자 지정 검색 기능을 포함하도록 웹 사이트를 업데이트하고 있습니다. 한마디로 :

  1. 그때 내 도메인에서 내 서버에 PHP 파일 (searchfunction.php)의 값을 POST (텍스트 상자 포함) HTML 양식에서 사용자 입력을.

  2. searchfunction.php는 양식 데이터를 처리하고 비공개 API 키 (http : // apidomain/[api key] /request.php?querystring 형식)가 포함 된 URL 쿼리 문자열에 추가합니다. curl_init을 통해 타사 서버로 전송합니다.

  3. 그러면 타사 서버가 URL의 쿼리 문자열을 기반으로 직렬화 된 PHP 배열을 반환합니다. 그러면 PHP 파일은 배열을 처리하고 원본 사용자 양식과 동일한 페이지에 나타나는 일부 HTML을 반향시킵니다 (거의 이해하지 못하는 일부 jQuery 마법을 통해). 나는 SQL 인젝션의 위험에 오전,

    Q1) 내가 다음 모든 SQL 물건을 처리하는 API에 컬 문자열을 보내고있다 때문에 :

여기 내 질문입니까? 그렇다면 그 위험을 배제한 이론은 무엇입니까?

Q2) 비공개 API 키를 숨기려면 어떻게해야합니까? 브라우저 URL 표시 줄에는 HTML 파일을 포함하지 않지만 양식 데이터를 처리하고 HTML을 반환하는 php 파일의 내용을 멀리 두는 간단한 방법 (.htaccess 파일을 통해)이 있습니다.

Q3) 내가 알아야 할 다른 확실한 보안 허점이 있습니까? 은 API를 통해 데이터베이스에 쓰는 방법이이고 (API 키 및 적절한 쿼리 문자열 구문이 없어도) 악의적 인 사용자가 cURL 호출을 조작하지 못하게하려면 어떻게해야합니까?

미리 도움을 주셔서 감사합니다. 이제는 내 웹 사이트를 다른 서버와 이야기하는 어지러운 세계로 들어서 자, 특히 보안과 관련하여 내 머리를 완전히 들었습니다.

+0

[대 탈주 (또는 텍스트 내에서 텍스트로 작업하기 위해 알아야하는 것)] – deceze

+0

"PHP에서 SQL 주입을 방지하는 방법"을 읽었으므로 저는 cURL을 통한 API 호출을 통해서만 SQL 데이터베이스와 상호 작용할 것입니다. 제 질문에 적용되지 않는다고 생각합니다. 그렇게 생각하니? 그런데 멋진 기사. – Chris

+0

항상 적용됩니다. 그것은 SQL 주입에 관한 것만이 아닙니다 ** 구문 오류를 피하는 것 **입니다. 구문 오류를 피하면 자동으로 SQL 삽입을 피할 수 있습니다. – deceze

답변

0

PHP는 서버 측이므로 키를 반향 출력하거나 경고/오류 (api 키가 포함 된 URL에 대해 불만을 나타낼 수 있음)가 발생하지 않는 한 문제가 없습니다. 그리고 api가 SQL 데이터를 처리하는 것에 대해 알지 못합니다 (오픈 소스가 아니면). 그렇게 중요하지 않습니다. 그들이 안전하다면, 그들은 안전합니다. 당신이 확실하지 않다면 보안에 대해 그들에게 물어봐야합니다.