2010-04-22 4 views
4

길이와 같이 자바 스크립트의 평가에 제한이 있습니까?자바 스크립트 평가 한도

DB에 JS 코드를 저장할 수있는 응용 프로그램을 빌드하려고합니다. 나중에로드하고 평가하여 실행할 수 있지만 한도에 도달했습니다. 우선 코드는 모두 한 줄에 있어야합니다. 모든 다중 행 문은 실행되지 않습니다. 다음으로 길이 제한에 도달했습니다 (아마도). 코드를 수동으로 실행하면 작동하지만 db에 동일한 코드를 넣고 아약스를 통해로드 한 다음 실행하려고하면 실패합니다.

왜 그런가?

+2

* DB에서 저장하는 것이 좋지만 왜 'eval'을 사용해야합니까? –

+1

db가 코드를 자르거나 다른 문자 인코딩 문제가있는 것처럼 들립니다. "동일"db 값으로 작동하는 수동 값을 diffed 시도 했습니까? – Robusto

+1

@Nick : 코드의 입력을 제어하므로 완벽하게 안전합니다. 그렇지 않으면 db js 코드가 별도의 파일로 침을 뱉어 내고 js 스크립트로 파일을 포함시키는 것이 좋습니다. 내가 생각하는 것보다 훨씬 더 효율적 일까? – R0b0tn1k

답변

1

스크립트 태그를 동적으로 생성하는 자바 스크립트 함수를 만들 수 있습니다 (createElement('script') 및 추가 head- 또는 bodytag에) 소스를 앱으로 향하게합니다. src에는 get 요청과 같이 사용되는 매개 변수가 포함될 수 있습니다 (예 : src="jsapp.aspx?script=myscript&includefunction=loadfn"). 새 스크립트 태그에 대한 onload 핸들러를 정의 할 수도 있습니다. 그물에 관한 많은 문서.

XHR (AKA Ajax)을 사용하지 않아도됩니다.

+2

당신이 말하는 것은 사실이지만 질문에 대한 대답은 아닙니다. –

+1

그리고? 내가 질문의 정신으로 대답했다고 가정 해 봅시다. – KooiInc

1

eval을 사용할 필요가 없으며 사용하기에 적합하지 않습니다. 페이지로 인쇄하면 실행됩니다.

Here is the accepted answer on why you should not use eval:

    평가의
  1. 잘못 사용하면 더 (
  2. 디버깅 (어떤 줄 번호 등)
  3. eval'd 코드가 더 느리게 실행 더 어려울 수 있습니다
  4. 주입 공격에 대한 코드를 열어 eval'd 코드를 컴파일/캐시 할 수있는 기회)
+2

당신이 말하는 것은 사실이지만 질문에 대한 대답은 아닙니다. –

0

나는 이것도 실행했습니다. 다른 사람들이 여기에서 말했듯이 eval은 자바 스크립트를 즉시 생성하고 브라우저에서 실행하려고 할 때 유용합니다. 이 기술의 내 용도는 단추를 눌렀을 때 서버로 다시 전화를 걸 간단한 기능과 같은 작은 것들로 이동하는 것입니다. 상황에 따라 두 가지 기능이있을 수 있습니다. 또한 데이터베이스에서 변경되는 정보를 표시하는 데 사용했습니다. 정보는 항상 단순한 텍스트입니다. 그래서 주사 공격은 할 수 없습니다.

어쨌든, 나는이 Javascript EVAL 문에 대한 제한 사항을 실행했으며 1024 자 제한이 있다고 생각합니다. 이걸 살펴볼 때 평가 절과 같은 이상한 것들을 원래 텍스트를 뱉어 내기 시작합니다. 이것은 브라우저에 보내기 전에 16 진수를 모두 16 진수로 처리하기 때문에 분명합니다. 그래서 텍스트에 작은 따옴표 나 큰 따옴표 같은 것을 넣으면 문제가 발생하지 않습니다. (그리고 모든 것을 hexing하는 것은 주사 공격을 막는 데 도움이됩니다.)

jQuery에서 getscript를 사용하는 사람과도 관련이 있습니다. 크기 제한이없는 평가와 마찬가지로 잘 작동합니다. 당신이 취해야 할 유일한 추가 단계는 먼저 자바 스크립트 파일을 만드는 것입니다.

나는이 도움이되고 원래 포스터의 질문에 답할 수 있기를 바랍니다. 크기 제한은 1024 바이트라고 생각합니다.

관련 문제