it-swarm-korea.com

사람들은 왜 PHP은 본질적으로 안전하지 않다고 말합니까?)

나는 PHP은 본질적으로 안전하지 않다는 말을 들었습니다. 이것이 사실입니까?

18
Moshe

좋은 프로그래머가 적응할 수 있기 때문에 언어가 내 정의에 의해 "내재적으로 안전하지 않은"것은 매우 어렵다. 그러나 PHP 초보자를 위해 많은 지뢰밭을 떠나기 시작했습니다.

PHP의 초기 버전은 보안에 거의주의를 기울이지 않았으며 디자인에는 큰 결함이있었습니다. 보안은 핵심 소프트웨어 및 라이브러리에 추가하기가 어렵습니다. 최상의 보안 교육은 어려운 상황입니다. 개발자의 큰 하위 집합이 경험이없고 잘못된 기본값으로 시작하는 경우 더욱 그렇습니다.

예를 들어, register_globals가 기본적으로 비활성화 된 버전 4.2.0이 아니기 때문에 네트워크를 통해 수신 된 데이터는 더 이상 전역 네임 스페이스에 직접 삽입되지 않았습니다. 이 기능은 다음 버전에서 완전히 제거 될 예정입니다.

PHP의 초기 릴리스와 간단한 PHP 응용 프로그램 배포 용이성)은 보안에 대한 인식이 거의없는 많은 개발자를 끌어 들이고 많은 수의 응용 프로그램을 보장했습니다. 이 중 다수는 원격으로 악용 가능한 취약점을 가지고있었습니다. 배포 된 기반의 크기와 취약점 또한 악용 커뮤니티로부터 많은 관심을 끌었습니다.

다음은 몇 가지 참조 및 유용한 링크입니다

27
nealmcb

이러한 이유 중 일부는 "Fractal of bad design" 에 설명되어 있습니다.

  • PHP는 장님을 이끄는 장님입니다. PHP wikibook;이 문서는 "절대적으로 취약한 응용 프로그램을 작성하는 방법"이라고해야합니다. 다른 언어로 출판 될 수 있다고는 생각할 수 없습니다.

  • 보안과의 관계. 직렬화 ( pickle )와 같은 안전하지 않은 것들에 대한 python docs)를 읽으면 페이지 상단에 "신뢰할 수없는 곳에 사용하지 마십시오"라는 빨간색 경고가 표시됩니다 입력! ". PHP는 어떻습니까?

  • 이전 항목 외에도 다른 언어에서는 코드의 기능과 작동 방식을 이해하지 못하면 코드가 문제로 간주됩니다. PHP에서는 코드가 악용 될 경우 문제로 간주됩니다.

  • PHP는 CGI로만 실행되므로 모든 요청에서 스크립트를 완전히 다시 초기화해야합니다. 그리고 그로 인해 프레임 워크가 미워됩니다. "그들은 느립니다!". 그러나 프레임 워크는 코드 삽입 취약점 (SQL 주입-100 %)을 제거합니다. 기본적으로 차이점이 있습니다. 준비된 명령문은 기본적으로 안전합니다. SQL 인젝션으로부터 자신을 보호하기 위해 아무것도하지 않아도됩니다. 즉,이를 잊거나 알 수 없습니다. 기본적으로 사용하지 않는 것은 확실하지 않습니다. 매번 수동으로 수정하지 않으면 보안 결함이 있습니다.

  • PHP 인터프리터 자체가 고장났습니다. PHP 자체는 그렇지 않지만 API는\0을 문자열 종결 자로 해석하는 유독 한 제로 버그-왜 python 가지고 있지 않습니까 ??

약한 타이핑 (즉, 문자열/숫자/등 사이의 자동 자동 변환)은 너무 복잡하여 사소한 프로그래머의 노력이 절약되는 것은 결코 가치가 없습니다.

  • this 를보십시오. 두 변수를 문자열로 비교한다고 생각하십니까? 죄송합니다. 더 재미있는 것 , 내가 가장 좋아하는 것. PHP에서 포럼 엔진을 작성할 수있는 모든 사람이 2 개의 문자열을 올바르게 비교할 수있는 것은 아닙니다.
11
Smit Johnth

적어도 두 가지 사항이 있습니다.

  1. PHP는 유비쿼터스이므로 해커에게는 흥미로운 대상입니다. 또한 사용하기 쉽기 때문에 많은 초보자 프로그래머가 PHP를 사용한다는 것을 의미합니다. 따라서 응용 프로그램에 타사 라이브러리를 포함하면 안전하지 않은 코드를 선택할 가능성이 높습니다.

  2. 더 중요한 점은 PHP 오늘날의 규모로 사용하도록 설계되지 않았다는 것입니다. Rasmus Lerdorf는 일부 Perl을 대체하기 위해 PHP 그가 사용한 스크립트는 거기에서 자랐으므로 보안을 작성할 때 보안이 가장 중요한 측면은 아니었고, 프로그래밍하기가 쉽기 때문에 그가 다시 사용하기로 결정한 많은 것들이 보안 위험이되었습니다. .

7
Andreas Arnold

더 인기있는 주제는 더 많은 관심을 유도하는 것입니다. 이것이 첫 번째 진실입니다. 두 번째 진실은 PHP 처음부터 잘 설계되지 않았으며 요즘 잘 작동하는 많은 내부 해킹이있어 보안 구현, 버전 비 호환성에 지속적으로 실패합니다. MOPS 를 확인할 수 있다는 증거입니다.

4
anonymous

아니요, 사실이 아닙니다. PHP에서 보안 코드를 완벽하게 작성할 수 있습니다. 그러나 PHP is로 작성된 많은 코드가 안전하지 않으며 그 이유는 간단합니다. PHP는 진입 장벽이 비교적 낮습니다. PHP의 보안 쓰기에 대해 거의 아는 사람들이 많습니다. 반면에 PHP는 웹 지향적입니다. 즉, 공개 PHP 응용 프로그램은 인터넷상의 모든 사람이 공격 할 수 있습니다 (예 : 데스크탑 용 C++ 응용 프로그램은 일반적으로 이미 데스크톱 컴퓨터에 액세스 권한이있는 사람 만 공격 할 수 있습니다.

2
StasM

매우 간단한 언어이므로 PHP 코드를 작성할 수있는 많은 바보가 있습니다. 이로 인해 많은 안전하지 않은 코드, 특히 include($_GET['page'])- style (원격) 코드 포함 구멍, XSS 구멍 및 SQL 주입 구멍.

파이썬과 Java 이전에 프로그래밍 한 적이없는 사람들에게는 그렇게 인기가 없으므로 프로그래밍 초보자가 적으므로 끔찍한 안전하지 않은 코드의 가능성이 낮습니다.

1
ThiefMaster

또 다른 측면 : Zend는 경쟁 업체보다 취약한 스택을 대상으로하는 엔터프라이즈를 기반으로 PHP 스택? 불안에 대한 비난이 아닌 언어입니다. 디자인입니다. 잘못된 디자인은 보안은 상태가 아니며 프로세스입니다. PHP의 대규모 기여자 기반은 꽤 잘 작동합니다.

0
djozsef