질문/조언질답게시판

외부사이트에서 JSON 파일을 PHP로 만들고 그걸 다른 사이트에서 CURL 등을 이요하여 가져오면 아래

코드가 뜨면서 다른 코드가 나오네요. 아마도 보안상 이런현상이 나는듯 한데... 해결방법이 있을까요?

JSON을 제공하는 사이트에서 권한설정이 필요한가요?

이부분은 도저히 모르겠네요.^^;

 

 

<html><body><script type="text/javascript" src="/cupid.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("9071b45273fadf0fefad367d98313ae6"),b=toNumbers("96aceafa0d06f06216f2e65cb299e01f"),c=toNumbers("acbe331e78b49617cb85a6d2a5396310");var now=new Date(),time=now.getTime();time+=3600*1000*24;now.setTime(time);document.cookie="CUPID="+toHex(slowAES.decryp......</script></body></html>

  • profile
    json파일을 PHP로 만들었다는 이야기가 무슨뜻인가요.

    다른 외부파일의 소스나 확인할 수 있는 url없나요?
  • profile profile

    개인정보가 있어서 URL 공유는 좀 어려울 것 같구요.

    브라우저에서 JSON파일 경로를 접속하면 아래 이미지처럼 JSON형식이 잘 나옵니다.

    20200918_150938.png

     

    위 JSON경로는 A사이트에서 제가 모듈에서 만든 파일입니다.

    위 파일의 주소를 이용해서 B사이트에서 가져오려고 했습니다.

    그런데 보안상 때문이 본문에 문의드렸던 코드로 변환이 되더라구요.

    CURL 해보고 라이믹스 내장함수 인 FileHandler::getRemoteResource($url)도 사용해보고

    급기야는 라이믹스 내장함수 인 getRemoteFile를 통해 파일 복사까지 하였습니다. 복사된 파일을 열어보니

    JSON원본 내용이 아니라 본문글에 적어둔 코드로 변환되어서 복사가 되더군요.

     

    제가 구현하고자 하는 것은 A사이트 DB를  B사이트에서 안전하게 출력하고자 합니다.

    제가 서버지식이 부족하다보니, 크로스도메인 형식으로 자료 주고받고 하는 방법을 잘 모르겟네요.

    이부분에 전문지식이 있으면 공유부탁드립니다.^^;

  • profile

    일부러 막아놓은 것 같은데요. 정상적인 브라우저 접속이 아니라고 판단되면 이상한 코드가 나오도록...

    CURL 사용하실 때 최대한 정상적인 브라우저인 척 하셔야 할 것 같습니다만

    클플 등 외부업체의 보안서비스를 사용하는 사이트라면 쉽지 않을 수도 있습니다.

  • profile
    제가 이래서 파싱 모듈을 더이상 판매 안합니다....
  • ?

    지금 저 자바스크립트 코드는 cupid 라는걸 만들어서 쿠키에 저장하고 있습니다.
    뒷과정은 안보이지만 아마 그후에 정상 URL로 리다이렉트시키고 cupid가 쿠키에 정상적으로 저장되어 있는지 판단해서 쿠키에 cupid가 있으면 상대방이 정상브라우저라고 판단하는 식의 체크과정인 것 같습니다.
    일단 브라우저로 해당 json파일을 가져가는 동작을 다시 해보신 후에 그때 해당 도메인의 쿠키를 확인해보세요. 쿠키에 cupid라는게 남아있을 확률이 높습니다. 그러면 그 cupid 값을 가져다가 php에서 curl을 실행할때 쿠키로 포함시켜서 보내보세요.

    정 안되겠으면 php에서 curl을 쓰지말고 node.js나 파이선을 이용해서 크롤링을 하세요. 이 경우에는 셀레니움이라는걸 이용하면 크롬브라우저를 메모리에 띄우고 이걸 이용해서 파일을 가져오는 식으로 할 수 있는데 이렇게 하면 브라우저를 완벽하게 흉내낼 수 있으므로 이런 문제가 발생하지 않습니다. php에서도 셀레니움을 쓸 수는 있는 것 같은데 과정이 쉽지 않은 것 같습니다.

     
  • ? profile
    대단하시네요. 답변감사드리구요. 이용하는 것이 서버가 아니라 호스팅이라서 node.js 등을 이용할수 없을것 같네요.
    쿠키 동일화를 해봐야겠네요. 감사합니다.