웹 서버 측의 수평선 주위에 보면, 내가, PHP와 같은 스크립팅 언어는 매우 인기있는 것을 볼 개발 및 프로그래밍의 용이성의 속도 아마도보안 서버 측 언어
. 그러나 스크립팅 된 언어는 사람이 읽을 수 있으므로 여기서는 코드 보안이 문제가되지 않습니다.
나는 서버 언어/기술이 가장 적합한 서버 코드에 대한 보안이 매우 중요하다는 것을 알고 싶습니다.
웹 서버 측의 수평선 주위에 보면, 내가, PHP와 같은 스크립팅 언어는 매우 인기있는 것을 볼 개발 및 프로그래밍의 용이성의 속도 아마도보안 서버 측 언어
. 그러나 스크립팅 된 언어는 사람이 읽을 수 있으므로 여기서는 코드 보안이 문제가되지 않습니다.
나는 서버 언어/기술이 가장 적합한 서버 코드에 대한 보안이 매우 중요하다는 것을 알고 싶습니다.
코드를 보호 할 수있는 유일한 방법은 ISAPI 또는 CGI를 사용하고 C, C++, VB 5 이상 같은 모든 하드 컴파일 언어로 응용 프로그램을 개발하는 것입니다.하지만 .NET, Delphi 5 또는 높다. 어떤 바이트 코드 또는 해석 된 언어는 당신이 무엇을 하든지 상관없이 분해 될 수 있습니다. 새로운 난독 화 방법은 잠시 동안 크래커를 잡을 수 있지만 항상 소스를 가져 오는 방법을 찾습니다. 소스가 있고, 디 컴파일 루틴이 있으며, 소스가 프레임 워크에서 사용되도록 공개되어야합니다. 따라서 모든 크래커가해야 할 일은 그걸 잡는 것입니다.
고마워!열심히 컴파일 된 언어를 디 컴파일 할 수없는 이유를 이해하지 못했습니다. –
기계 코드, 내보내기 테이블 및 정적 값이 혼합되기 때문에 결과가 다릅니다. 이름이 전혀없고 기계 코드의 모든 것이 주관적이기 때문에 주기순으로 실행하지 않는 한 프로그램의 데이터를 쉽게 분리 할 수없고 무슨 일이 일어나고 있는지 이해하려고 시도하기 때문에 "디 컴파일러"에는 창의성이 필요합니다. 두뇌. 여전히 되돌릴 수는 있지만 자동으로 수행 할 수는 없습니다. – Havenard
"C, C++, VB 5 또는 그 이상이지만 .NET, Delphi 5 또는 그 이상과 같은 하드 컴파일 된 언어" 위의 내용은 모두 위의 모든 내용이 하드 컴파일 된 것입니다. –
언어와 관련하여 작은 부분이 있습니다. 그러나 많은 것들이 실제로 코드를 디자인하고 작성하는 방법과 관련이 있습니다.
서버 측 언어를 사용하면 FTP 프로토콜 (또는 SSH)에 대한 액세스 권한이있는 사용자 만 파일을 볼 수 있습니다. 정기적으로 웹을 탐색 할 때 PHP 또는 다른 스크립팅 언어를 볼 수 없습니다.
실제 언어 보안 측면에서 볼 때 버그는 거의 발견되지 않지만 모든 언어로 표시됩니다. 스크립트의 보안은 디자인 방법에 따라 다릅니다.
대부분의 언어는 안전하지만 모든 프로그래머가 아닙니다.
잘못된 설정이나 오류로 인해 PHP와 같은 스크립팅 언어 코드가 서버의 파일 시스템에서 읽을 수있는 섹션에 있으면 해당 코드가 전세계에 공개 될 수 있습니다. 그렇기 때문에 데이터베이스의 사용자 이름/비밀번호 같은 것을 포함하는 스크립트가 웹에 노출되지 않은 서버 부분에 있어야하며 포함 또는 자동로드를 통해 가져와야합니다. – matthock
ASP.NET은 dll 파일로 컴파일되므로 코드는 사람이 읽을 수 없습니다. 그러나 PHP에서도 코드는 서버에서 실행됩니다.
자바 스크립트에서 멀리 떨어져 있으면 클라이언트에서 볼 수 있고 사람이 읽을 수 있습니다.
자바 스크립트가 서버 측에서 실행되지 않는 한 ... –
좋은 지적이지만, 프로덕션에서는 들어 본 적이 없다. FYI, http://en.wikipedia.org/wiki/Server-side_JavaScript –
내 기본 설정은 .NET입니다. 그러나 PHP와 같은 스크립팅 언어를 사용하는 경우에도 원시 코드 파일을 읽는 사람들에게 액세스 권한을 부여하지 않는 한 원시 코드가 표시되지 않습니다. 나는 아주 안전한 PHP 사이트를 보았다. 사람들이 무엇을보고 액세스 할 수 있는지 염려한다면 Javascript와 같은 클라이언트 측 스크립팅 언어에 무엇을 넣고 있는지 관찰해야합니다.
심각한 (Piet, Malbolge 등 무시) 프로그래밍 언어는 사람이 읽을 수 있습니다. 명시 적 컴파일 단계가 필요한지 여부는 애플리케이션 보안에 영향을 미치지 않습니다.
보안을 매우 중요하게 생각한다면 Haskell이나 Ada와 같은 손쉬운 확인 및/또는 교정을 지원하는 언어를 사용하십시오. 전형적인 웹 애플리케이션은 Python이나 Ruby와 같은 현대적인 동적 언어에서 아마 괜찮을 것입니다. Java 및 C#은 성능상의 이유로 널리 사용됩니다. 이 중 어떤 것도 PHP, Perl/CGI 또는 고전 ASP와 같은 레거시 플랫폼보다 훨씬 쉽게 보안 응용 프로그램을 개발할 수 있습니다.
마지막으로 PHP, Python, Ruby, Perl 등의 작은 애완 동물은 스크립팅 언어가 아닙니다.
이 문장은 "모든 심각한 프로그래밍 언어는 사람이 읽을 수있다"는 것을 이해하지 못했습니다. –
Aeon : 언어가 사람이 읽을 수 없으면 해당 언어로 작성된 응용 프로그램을 유지 관리하기가 매우 어렵습니다. 이러한 이유로 인기를 얻는 유일한 언어는 사람이 읽을 수있는 언어입니다. –
나는 Java와 같은 컴파일 된 언어를 의미했지만 .NET은 사람이 읽을 수있는 코드를 웹에 저장하지 않고 실행 가능한 버전 만 저장합니다. 스크립팅 된 언어의 경우는 그렇지 않습니다. –
스크립트 언어는 그래서 코드 보안이 여기에 문제가 될 것이없는 사람이 읽을 수 있습니다.
아니요, 소스를 게시하지 않는 한 웹 사용자는 서버 측 프로그램 코드를 볼 수 없습니다.
웹 응용 프로그램의 보안 문제 중 일부는 서버 측에서 사용되는 언어 유형에 기인합니다. 버퍼 오버플로는 C의 일반적인 보안 문제입니다. 따라서 스크립팅 언어가 실제로 더 안전 할 수 있습니다.
일반적인 보안 문제
Ruby on Rails와 같은 최신 웹 프레임 워크 s)를 사용하면 이러한 문제를 피할 수 있습니다. 그러나 당신은 여전히 웹 보안에 대해을 많이 배워야 할 것입니다!
"Javascript에서 벗어나기"는 위험하기 때문에 "자동차에서 멀리 떨어져있는"것과 조금 비슷합니다. Javascript는 현대 웹 응용 프로그램의 필수적인 부분입니다.
웹 보안 학습에서 출발점은 무엇입니까? –
좋은 질문 - 나는 새로운 질문으로 여기에 reposted : http://stackoverflow.com/questions/1280143/current-books-on-web-security – bjelli
코드를 숨기려면이 기능을 지원하는 몇 가지 다른 언어가 있습니다. .NET 언어를 컴파일하여 서버에 원본 소스 코드를 포함하지 않고 DLL을 생성 할 수 있습니다. 그러나 이러한 것들은 .NET Reflector와 같은 것으로 읽을 수 있으므로 코드에서 Dotfuscator와 같은 것을 실행하여 읽는 것을 더 어렵게 만듭니다.
PHP의 경우 스크립트를 인코딩하는 ionCube와 같은 솔루션이 있으며이를 실행하기 위해 서버의 추가 디코더와 함께 실행해야합니다. 보통 이것은 스크립트를 재판매 할 때 사용되므로 클라이언트는 소스를 보거나 수정할 수 없습니다.
소스 코드 비공개! = 보안. 게다가 사람들은 항상 클라이언트 측에서 엔지니어 코드를 리버스 엔지니어링하거나 어쨌든 감사 할 수 있습니다. –