2011-01-19 5 views
3

SalesForce.com에 데이터를 제출하려고하는데 AJAX를 통해 데이터를 보내고 싶습니다. XSS를 막을 수있는 제한이 있기 때문에 jQuery에서 AJAX를 사용하여 내 서버의 PHP 페이지에 제출 한 다음 해당 페이지를 전달하여 올바른 URL로 전달 된 양식 데이터를 전달하도록하고 있습니다.양식 제출과 cURL 요청 간에는 어떤 차이가 있습니까?

JS를 끄고 양식을 제출하면 모든 것이 정상적으로 처리됩니다. 이 기능을 켜면 Salesforce에서 데이터 수신을 확인하지만 (디버그 모드에서) 내 대기열에 표시되지 않거나 SF에서 실제로 표시되지 않습니다. SF는 통과 한 모든 필드를 다시 뱉어 내 양식에있는 모든 필드를 적절히 채웠습니다.

이 방법 (jQuery의 $.ajax()에서 PHP cURL)을 통해 제출하는 것과 기본 HTML 제출 버튼을 통해 어떤 차이가 있습니까? SF가 데이터를 등록하도록 만들지 만 다르게 등록 할 수있는 것이 있습니까? 추가 시도했습니다 CURLOPT_HEADER/CURLOPT_HTTPHEADER 정보

+1

나는 SF에 대해 아무것도 모른다. 그러나 cURL이 보내지 않을 수도있는 POST 날짜와 함께'Cookie' 헤더를 기대할 것인가? – TRiG

+0

양식에서 쿠키를 사용합니까? 나는이 페이지에서 AJAX없이 쿠키를 넘기지 않을 것입니다. 무엇을 찾고 있을까요? –

+1

USER_AGENT 헤더는 다른 점이 하나 있습니다. 또한 @TRiG에 나와 있듯이 브라우저는 세션 정보와 같은 모든 요청에서 쿠키를 운반합니다. salesforce가 그것에 민감 할 수 있습니다. curl 및 쿠키 처리 방법에 대한 정보는 여기에서 찾을 수 있습니다. "curl cookies"또는 "cookiejar"검색 –

답변

2

자, 위장 할 수없는 유일한 점은 요청의 IP 주소입니다. 세일즈 포스가 사용하는 것이 얼마나 어려운지에 따라 별도의 IP 주소에서 스푸핑 할 수 없을 수도 있습니다 (요청을 탐지하고 거부 할 수 있음).

다른 모든 것은 100 % 가짜이어야합니다 (헤더 등). 제가 제안하는 것은 방화범이나 TamperData를 얻고 브라우저에서 salesforce로 보내지는 원시 헤더를 정상적으로 볼 수 있다는 것입니다. 그런 다음 PHP에서 정확한 요청을 복제하십시오. 다른 정보가 필요하면 JS에서이를 감지하고 PHP (쿠키 정보, 브라우저 정보 등)에 전달할 수 있습니다 ...

+0

확실한 IP 사양이 없습니다. 방화범을 받으면 양식 게시물에 대해 어떻게 알 수 있습니까? 나는 노력해 왔지만, 내가 잡을 수있는 것은 AJAX 요청 등이다. –

+0

글쎄, 방화범이 끌린 물건을 잡을 수 있어야한다. 하지만 개인적으로 수정을 직접 테스트 할 수 있기 때문에 개인적으로 ['Tamper Data'] (https://addons.mozilla.org/en-US/firefox/addon/tamper-data/)와 같습니다. 그냥 켜기 만하면 요청을 보여 주거나, 원한다면 제출 전에 편집하고 일시 중지하도록 할 수 있습니다 ... 그리고 세션 코드에 IP 검사가 없다고 확신합니까? 세션 쿠키를 전달하는 중이므로 쿠키가 적절한 IP 주소에서 오는 것인지 확인하기 위해 온 전성 검사를 수행 할 수 있습니다. – ircmaxell

+0

이 시점에서 나는 세션 쿠키를 _intentionally_ 전달하지 않습니다.또한 FF4b9를 사용하고 있으므로 Tamper Data는 옵션이 아닌 것으로 보이며 Firebug는 POST를 캡처하지 않는 것 같습니다. 얼마나 고통스러워! –

0

$ .ajax()는 클라이언트 브라우저에서 쿠키를 전송합니다. 또한 "X-Requested-With : XMLHttpRequest"요청 헤더를 추가합니다.

+0

해당 헤더가 자동으로 cURL로 전달됩니까? 그렇지 않으면 나는 그것이 지나가고 있다고 생각하지 않기 때문입니다. 어느 쪽이든 그것은 좋은, 감사합니다. –

0

PHP가 실행되는 컴퓨터의 (외부) IP 주소를 추가해보십시오. 코드를 Salesforce의 신뢰할 수있는 네트워크 목록에 추가하십시오. salesforce.com에 로그인하여 설정 -> 보안 제어 -> 네트워크 액세스로 이동하여 IP를 추가하십시오.

비슷한 문제가 발생하여 sf에 연결된 java 앱을 실행하는 서버의 IP 주소를 추가해야합니다. 그러면이 문제가 해결되었습니다.

+0

이것은 나에게 아무런 도움이되지 않지만 감사합니다. 나는 폼을 제출하고 있기 때문에 (폼 요청은 어떤 사용자의 브라우저에서도 올 수있다), IP에 대해서는 너무 엄격하지 않다. –

관련 문제