2012-01-01 2 views
0

다른 사람이 브라우저에서 내 .js 또는 .css 파일 중 하나를 연 경우 다른 콘텐츠를 표시 할 수 있습니까? .js 및 .css 파일에서 PHP 코드를 실행하도록 Apache를 구성했습니다. 파일이 웹 페이지에서 요청되었거나 사용자가 직접 본 경우 어떻게 감지합니까?PHP를 사용하여 Javascript 및 CSS 파일을 "클로킹"할 수 있습니까?

편집 : 내 파일을 100 % 숨길 방법이 없습니다. 사람들이 내 코드를 복사하지 못하게하는 가장 좋은 방법을 찾고 있습니다.

+4

수 없습니다. 할 수있는 최선의 방법은 [obfuscate] (http://stackoverflow.com/questions/194397/how-can-i-obfuscate-javascript) 및 [minify] (http://en.wikipedia.org/wiki/Minification_ (프로그래밍))). –

+3

이것은 "정보를 제공하지 않고도 다른 사람에게 정보를 제공 할 수 없습니다"라는 또 다른 경우입니다. – Ben

답변

7

브라우저에서 작동하는 웹상의 어떤 것도 진정으로 은폐 될 수 없습니다. 브라우저는 파일을 요청하는 에이전트 일 뿐이며 어떤 용도로든 파일을 요청하는 모든 에이전트와 같습니다. 서버는 웹 페이지의 일부인 JS 파일을 다운로드하는 브라우저와 JS 파일을 다운로드하는 사용자간에 차이가 없다는 것을 알고 있습니다. 서버에 파일을 다운로드하라는 요청 일뿐입니다. 서버는 무슨 일이 일어나는지 알지 못합니다.

JS 파일과 CSS 파일은 일반적으로 성능상의 이유로 서버에서 독립적으로 검색 할 수있는 디스크 캐시에 보관됩니다.

당신이 할 수있는 유일한 일은 축소와 난독 화로 코드를 가리는 것입니다. Minification은 물건을보다 효율적으로 만들기 때문에 의미가 있습니다. 결정된 뷰어를 실제로 멈추게하지 않기 때문에 개인적으로 난독 화를 권장하지 않습니다. 단지 약간만 느려지 게 만듭니다. 브라우저가이를 실행하기 위해 JS 파일을 이해할 수 있다면 해커가 그렇게 할 수 있습니다.

일반적으로 사람들은 자바 스크립트가 실제로는 그보다 훨씬 더 중요한 비밀이라고 생각하는 것 같습니다. 정말로 보호해야하는 일종의 비밀 알고리즘을 가지고 있다면, 서버에서 코드를 유지하고 필요에 따라 클라이언트 자바 스크립트에서 액세스하는 아약스 호출을 사용하는 것이 가장 좋습니다.

+3

마지막 단락은 실제로 그것을 요약 한 것 같습니다. 사람들이 그것을보고 싶지 않다면, 사람들에게 보내지 마십시오. 서버에 비밀을 유지하십시오. – FakeRainBrigand

+2

+1. 마지막 단락에서 더 나아가, 어떤 사람들은 자신의 코드가 얼마나 훌륭한 지에 대한 과장된 생각을 가지고 있다고 생각합니다. 거기에는 수천 명의 사람들이 그것을 복사 할 수 있도록 나열되어 있습니다. (나는 OP가 그런 인물이라는 것을 암시하는 것은 아닙니다. 모든 웹 개발자가 어떤 시점에서 묻는 질문이라고 생각합니다.) – nnnnnn

0

사용자가 HTTP Referrer 헤더를 확인하여 파일을 직접 호출했는지 여부를 감지 할 수 있습니다. 그러나 사용자가 파이어 버그 또는 이와 동등한 도구를 체크인하여 스크립트 원본을 볼 수는 없습니다.

+0

또는 원하는 리퍼러 헤더를 설정하십시오. 디스크 캐시에서 가져 오거나 네트워크 트래픽 분석기에서 캡처하십시오. 브라우저 액세스를 허용하고 사람이 액세스 할 수 없도록하는 방법은 없습니다. – jfriend00

관련 문제