2009-08-14 4 views
1

웹 서버 측의 수평선 주위에 보면, 내가, PHP와 같은 스크립팅 언어는 매우 인기있는 것을 볼 개발 및 프로그래밍의 용이성의 속도 아마도보안 서버 측 언어

. 그러나 스크립팅 된 언어는 사람이 읽을 수 있으므로 여기서는 코드 보안이 문제가되지 않습니다.

나는 서버 언어/기술이 가장 적합한 서버 코드에 대한 보안이 매우 중요하다는 것을 알고 싶습니다.

+0

소스 코드 비공개! = 보안. 게다가 사람들은 항상 클라이언트 측에서 엔지니어 코드를 리버스 엔지니어링하거나 어쨌든 감사 할 수 있습니다. –

답변

2

코드를 보호 할 수있는 유일한 방법은 ISAPI 또는 CGI를 사용하고 C, C++, VB 5 이상 같은 모든 하드 컴파일 언어로 응용 프로그램을 개발하는 것입니다.하지만 .NET, Delphi 5 또는 높다. 어떤 바이트 코드 또는 해석 된 언어는 당신이 무엇을 하든지 상관없이 분해 될 수 있습니다. 새로운 난독 화 방법은 잠시 동안 크래커를 잡을 수 있지만 항상 소스를 가져 오는 방법을 찾습니다. 소스가 있고, 디 컴파일 루틴이 있으며, 소스가 프레임 워크에서 사용되도록 공개되어야합니다. 따라서 모든 크래커가해야 할 일은 그걸 잡는 것입니다.

+0

고마워!열심히 컴파일 된 언어를 디 컴파일 할 수없는 이유를 이해하지 못했습니다. –

+1

기계 코드, 내보내기 테이블 및 정적 값이 혼합되기 때문에 결과가 다릅니다. 이름이 전혀없고 기계 코드의 모든 것이 주관적이기 때문에 주기순으로 실행하지 않는 한 프로그램의 데이터를 쉽게 분리 할 수없고 무슨 일이 일어나고 있는지 이해하려고 시도하기 때문에 "디 컴파일러"에는 창의성이 필요합니다. 두뇌. 여전히 되돌릴 수는 있지만 자동으로 수행 할 수는 없습니다. – Havenard

+0

"C, C++, VB 5 또는 그 이상이지만 .NET, Delphi 5 또는 그 이상과 같은 하드 컴파일 된 언어" 위의 내용은 모두 위의 모든 내용이 하드 컴파일 된 것입니다. –

1

언어와 관련하여 작은 부분이 있습니다. 그러나 많은 것들이 실제로 코드를 디자인하고 작성하는 방법과 관련이 있습니다.

5

서버 측 언어를 사용하면 FTP 프로토콜 (또는 SSH)에 대한 액세스 권한이있는 사용자 만 파일을 볼 수 있습니다. 정기적으로 웹을 탐색 할 때 PHP 또는 다른 스크립팅 언어를 볼 수 없습니다.


실제 언어 보안 측면에서 볼 때 버그는 거의 발견되지 않지만 모든 언어로 표시됩니다. 스크립트의 보안은 디자인 방법에 따라 다릅니다.

대부분의 언어는 안전하지만 모든 프로그래머가 아닙니다.

+4

잘못된 설정이나 오류로 인해 PHP와 같은 스크립팅 언어 코드가 서버의 파일 시스템에서 읽을 수있는 섹션에 있으면 해당 코드가 전세계에 공개 될 수 있습니다. 그렇기 때문에 데이터베이스의 사용자 이름/비밀번호 같은 것을 포함하는 스크립트가 웹에 노출되지 않은 서버 부분에 있어야하며 포함 또는 자동로드를 통해 가져와야합니다. – matthock

1

ASP.NET은 dll 파일로 컴파일되므로 코드는 사람이 읽을 수 없습니다. 그러나 PHP에서도 코드는 서버에서 실행됩니다.

자바 스크립트에서 멀리 떨어져 있으면 클라이언트에서 볼 수 있고 사람이 읽을 수 있습니다.

+1

자바 스크립트가 서버 측에서 실행되지 않는 한 ... –

+0

좋은 지적이지만, 프로덕션에서는 들어 본 적이 없다. FYI, http://en.wikipedia.org/wiki/Server-side_JavaScript –

1

내 기본 설정은 .NET입니다. 그러나 PHP와 같은 스크립팅 언어를 사용하는 경우에도 원시 코드 파일을 읽는 사람들에게 액세스 권한을 부여하지 않는 한 원시 코드가 표시되지 않습니다. 나는 아주 안전한 PHP 사이트를 보았다. 사람들이 무엇을보고 액세스 할 수 있는지 염려한다면 Javascript와 같은 클라이언트 측 스크립팅 언어에 무엇을 넣고 있는지 관찰해야합니다.

3

심각한 (Piet, Malbolge 등 무시) 프로그래밍 언어는 사람이 읽을 수 있습니다. 명시 적 컴파일 단계가 필요한지 여부는 애플리케이션 보안에 영향을 미치지 않습니다.

보안을 매우 중요하게 생각한다면 Haskell이나 Ada와 같은 손쉬운 확인 및/또는 교정을 지원하는 언어를 사용하십시오. 전형적인 웹 애플리케이션은 Python이나 Ruby와 같은 현대적인 동적 언어에서 아마 괜찮을 것입니다. Java 및 C#은 성능상의 이유로 널리 사용됩니다. 이 중 어떤 것도 PHP, Perl/CGI 또는 고전 ASP와 같은 레거시 플랫폼보다 훨씬 쉽게 보안 응용 프로그램을 개발할 수 있습니다.

마지막으로 PHP, Python, Ruby, Perl 등의 작은 애완 동물은 스크립팅 언어가 아닙니다.

+0

이 문장은 "모든 심각한 프로그래밍 언어는 사람이 읽을 수있다"는 것을 이해하지 못했습니다. –

+0

Aeon : 언어가 사람이 읽을 수 없으면 해당 언어로 작성된 응용 프로그램을 유지 관리하기가 매우 어렵습니다. 이러한 이유로 인기를 얻는 유일한 언어는 사람이 읽을 수있는 언어입니다. –

+0

나는 Java와 같은 컴파일 된 언어를 의미했지만 .NET은 사람이 읽을 수있는 코드를 웹에 저장하지 않고 실행 가능한 버전 만 저장합니다. 스크립팅 된 언어의 경우는 그렇지 않습니다. –

3

스크립트 언어는 그래서 코드 보안이 여기에 문제가 될 것이없는 사람이 읽을 수 있습니다.

아니요, 소스를 게시하지 않는 한 웹 사용자는 서버 측 프로그램 코드를 볼 수 없습니다.

웹 응용 프로그램의 보안 문제 중 일부는 서버 측에서 사용되는 언어 유형에 기인합니다. 버퍼 오버플로는 C의 일반적인 보안 문제입니다. 따라서 스크립팅 언어가 실제로 더 안전 할 수 있습니다.

Ruby on Rails와 같은 최신 웹 프레임 워크 s)를 사용하면 이러한 문제를 피할 수 있습니다. 그러나 당신은 여전히 ​​웹 보안에 대해을 많이 배워야 할 것입니다!

"Javascript에서 벗어나기"는 위험하기 때문에 "자동차에서 멀리 떨어져있는"것과 조금 비슷합니다. Javascript는 현대 웹 응용 프로그램의 필수적인 부분입니다.

+0

웹 보안 학습에서 출발점은 무엇입니까? –

+2

좋은 질문 - 나는 새로운 질문으로 여기에 reposted : http://stackoverflow.com/questions/1280143/current-books-on-web-security – bjelli

1

코드를 숨기려면이 기능을 지원하는 몇 가지 다른 언어가 있습니다. .NET 언어를 컴파일하여 서버에 원본 소스 코드를 포함하지 않고 DLL을 생성 할 수 있습니다. 그러나 이러한 것들은 .NET Reflector와 같은 것으로 읽을 수 있으므로 코드에서 Dotfuscator와 같은 것을 실행하여 읽는 것을 더 어렵게 만듭니다.

PHP의 경우 스크립트를 인코딩하는 ionCube와 같은 솔루션이 있으며이를 실행하기 위해 서버의 추가 디코더와 함께 실행해야합니다. 보통 이것은 스크립트를 재판매 할 때 사용되므로 클라이언트는 소스를 보거나 수정할 수 없습니다.