보안 코딩 관행

이 문서 깊숙하게에 더 많은 기술적인 측면의 보안의 코드를 구현하는 데 사용하는 응용 프로그램을 제공 이드 라인을 개발 an 집행 과정에 대한 보안 구현합니다. 의 잠재력에 대한 취약점은 응용 프로그램이 감소하는 강한 디자인, 그러나 그 운명의 구현의 응용 프로그램을 봉인합니다. 힘든 작업 투입하는 보안 디자인해진다 inconsequential 구현이 저조한 경우에 완료됩니다. 을 이해하는 것도 중요하다을 포함하면 보안 - 관련 기술이나 디자인 방법은 아닙니다 암시하거나 어떤 수준의 보안을 보장하는 응용 프로그램 내에서합니다. 의 구현에 어떠한 보안 기술을 사용하는 응용 프로그램 및 최종 구성 요소 중 하나입니다 제공하는 높은 수준의 신뢰성을합니다.

분석 내용을 구현 단계는 모두의 개발자 및 개발 관리자의 책임입니다. 개발자는 책임을 구현하는 디자인을 잘 반면 관리자에 대한 책임은 보장하는 좋은 구현하는 프로세스를 설정 오. 를 포함하는 표준화된 절차를 통해이 작업을 수행할 수있습니다 문서화 개발 및 코딩 표준을, 디자인과 코드 리뷰 및 개발자 훈련과 관련하여 보안에 응용 프로그램을 개발합니다. 이러한 절차를 혜택을 개발자와 어플 리케이션에 상관없이 어떤 언어를 유형의 응용 프로그램을 개발하는 데 사용됩니다.

가 장 많이 사용되는 언어를 오늘은 c 프로그래밍 언어, 자바, 스크립트 언어와 같은 펄과 유닉스 쉘. 이러한 각각의 언어와 환경을 사용할 수있습니다 부적절가 관리하는 응용 프로그램과 시스템에 대한 보안을 어느 동작할 수있습니다. 그러나,이 기술이 아닌 개발자를위한 점검 사항을 수행합니다. 대신에 개발의 보안 - 포커스 생각을 처리할 수있게하는 arguably 강력한 코딩을 연습합니다.

주의할 점은 c

가 c 프로그래밍 언어를 포함 c, c + +, 및 개체 - c를 사용하는 것이가 장 일반적으로 사용되는 언어와 수있습니다 위험이 확실하지 손. 그들을 개발자와 함께 제공할 수있는 능력을 조작하고 액세스 많은 부분의 시스템과 같은 메모리, 파일 및 장치가있습니다. 이것은 큰 장점은 c 언어, 그러나 위험 발생하면 개발자가 실수를하기 마련입니다. c 제공하는 높은 수준의 액세스를 기본 운영 체제 및 지 몇 견제와 균형을 보호하기 위해 개발자입니다. 경우에 개발자가 실수로 잘못된 장치 또는 메모리에 데이터를 기록합니다 위치를 c 프로그램은 무엇 무엇을 개발자를 기록과 상관없이 데이터 또는 목적입니다.

  

의 첫 번째 취약 지역을 자주 연관된 c가 버퍼 오버플로합니다. 다음 예제 코드를 보여줍는 아주 기본적인 오버플 :

  문자 문자열 [10]; 
  strcpy (문자열, "aaaaaaaaaaaaaaa"); / * 15 "를"문자 

여기에, 15 "를"문자는 메모리 영역에 복사 변수에 대한 문자열,이 선언에 정적 10 - 문자 배열된다. 가 strcpy () 함수는 정확하게 지시하지 않아도되는 데이터의 크기에 대한 논란의 위치를 쉽게 복사하거나 이동합니다. 버퍼 오버플로가 발생하면 11 번째 요소는 메모리 위치에 복사, 바로 다음의 위치는 10 요소의 변수가 문자열입니다. 이제이 원칙을 적용하여 모든 입력 데이터가 나온다는 외부 소스, 대체는 문자열의 "를"문자가있습니다. 이를 통해 공격자가 오버플로우을 제어하는 효과가있습니다.

가 strcpy () 함수는 하나의 여러 기능에 c가 필요하지 않은 모든 경계 검사를 수행하고 임의로 크기의 버퍼를 복사하도록 허용합니다. 다른 기능을 피하기는 향상된 (), strcat (), sprintf (), scanf () 제품군의 기능을합니다. 이 업데이트된 버전의 일부는 이러한 기능이 허용 길이를 복사하여 지정할 수있습니다. 이들은 strncpy (), strncat (), snprintf (), 결과 ()를합니다. 이러한 수정 기능이 복사에만 최대 길이를 매개 변수에 의해 지정된 문자의 수를합니다. 시 장, 길이 문자는 복사에서 소스를 목적 :

  strncpy (목적, 소스, 길이); 

을 사용하는 경우의 "해당"버전의 문자열 조작 함수 - strncpy (), strncat (), snprintf (), 결과 () -해야하는보다 큰 목적 문자열의 길이 아니다보다는 소스 문자열입니다. 버퍼 오버런 수있습니다보다 큰 경우에 길이 값은의 크기는 대상의 버퍼입니다.

포인터를 버퍼를 사용하는 경우, 대신에 정적 선언 버퍼 메모리가 부족하여 저장소를 할당할 필요합니다되고있는 값을 복사합니다. 메모리 조작 함수를 사용하는 길이를 지정할 수있습니다.

때는 메모리를 할당에 대한 문자열 데이터를 잊지 마십시오을 추가 1로의 총 길이, 순서를 수용할에 널 종료 문자가있습니다. 없이 널 터미네이터,이 데이터를 메모리에 직접 이후에 마지막 문자의 문자열을 모른다는 문자열의 일부로 간주됩니다.

이러한 기능은없습니다 버퍼 오버플로우가 발생할 수있는 유일한 장소입니다. 을 반드시 확인하는 정보를 읽고, 복사, 또는 서면으로 어떠한 메모리 위치 또는 할당을하는 변수가 맞게, 또는 해당 목적에 할당 충분한 저장 공간입니다.

를 코드에 버퍼 오버플로우를 방지하려면, 반드시 유효성을 입력합니다. 수표의 크기는 데이터와 스토리지 위치하고 조작 함수를 사용하는 개발자 - 지정된 양의 정보를 생성하는 대신 임의로 긴 덩어리의 데이터입니다.

레이스 조건을 추가 수준의 복잡도를 사용 c 코드가있습니다. 레이스 조건을 이용할 수의 두 측면 c 코드를 생성 - 시퀀싱 및 보호합니다.

시퀀싱되는 순서를 말합은 응용 프로그램에서 이벤트가 발생합니다. 경쟁 조건이 발생할 수있습니다 종속 사이에서 시퀀싱 유사 행사, 검사가 완료되지 않은 경우 사이의 이벤트가있습니다. 이 자주를 의미 a 약점은 어떤 오류 - 검사 및 유효성 검사 루틴을 사용합니다. 만약 두 함수가 정상적으로 실행을 순차적으로, 두 번째 함수를 정합의 결과의 첫 번째가 유효하려면 다음을가 능성에 대한 경쟁 조건이 존재합니다. 강화된 권한은 종종 목표물을 공격합니다. 조직과 결합 시퀀싱 및 오류 검사를 최소화가 능성에 대한 경쟁 조건입니다.

이것은 잘못된 구현이 만들어집니다 경쟁 조건 :

  increase_privs (); 
 ... 
  값 = special_app_function (); / * 필요한 권한 * / 
  other_unreleted_function (); / *가 필요하지 않습니다 권한 * / 
  other_unreleated_function2 (); / * ditto * / 
  special_dependent_function (값); / * 필요한 권한 * / 
 ... 
  접속 종료 (); 

여기에 몇가 지 안전하지 않은 사례가 발생합니다. 권한의 응용 프로그램이 강화된 초기에 응용 프로그램을하지만, 나중에까지 사용되지 않습니다. 그들은 또한 결코 신비주의, 그래서 대부분의 기능이 실행됩니다 특권 레벨이 높은 - 이상 - 필요합니다. 마지막으로, 경쟁 조건이 만들어 열악한 조직 - 종속 기능을 통해 서로 인접해 발생하지 않습니다. 예를 들어 이러한 문제가 해결되는가

  increase_privs (); 
  값 = special_app_function; / * 필요한 권한 * / 
  만약 (! validate_function (값) / * 보장의 안전의 값 * / 
  ( 
  do_error_processing (값); / * 무엇인 지능형있는 오류 * / 
  ) 
  special_dependent_function (값); / * 필요한 권한 * / 
  decrease_privs (); / * 더 이상 필요하지 않습니다 권한 * / 
  
  other_unreleted_function (); / *가 필요하지 않습니다 권한 * / 
  other_unreleated_function2 (); / * ditto * / 

참고 사항의 특별 검사와 오류를 처리하는 데 사용되는 루틴을 통과하기 전에 값을 다른 기능을합니다.

정리 기능과 결합을 통해 유효성을 보장하는 예상 정보가 손상되지 않습니다 간의 종속 이벤트가있습니다.

다양한 인종의 결과는 열악한 조건으로 임시 파일을 사용합니다. 이러한 파일이 만들 때, 그들의 외부의 공격으로부터 보호하는 동안 작업을해야한다. 유닉스와 windows 수있는 개발자를 설정하는 권한 비트 및 운영 깃발을 만들 때 파일입니다. 권한에 대한 액세스를 허용하지 않도록해야한다 누구든지 있지만 소유자가 처리합니다. 을 만들 때 사용하는 파일을 열 () 호출을 설정합니다 o_excl 및 o_creat 플래그, 어떤 원인이 함수로 돌아가 오류를 생성하려는 경우 해당 파일이 이미 존재합니다. 임시 파일이므로, 그것은 그것의 필요성에 대해 이전에 존재하지 않습니다. 이 파일이 존재, 이것이가능한 기호의 공격입니다. 이러한 방법을 사용하는 경우, 그것은 또한 중요한을 확인하려면 값을 반환의 기능과를 정리 모든 파일의 이벤트 중 오류 조건입니다. 다음 예제의 구문을 열려면 파일 - 또는 작성 하나, 그렇지 않은 경우에만 허용하는 이미 존재 -와 함께 사용 권한을 창조하여 읽기, 쓰기, 그리고이를 실행 매크로를 사용하여 s_irwxu 모드입니다.

  열기 ( "파일명", o_creat | o_excl | o_wronly, s_irwxu); 

에 대한 호출은 실패의 이벤트 해당 파일이 이미 있기 때문에 중 o_excl 플래그입니다. 또한, 참고 비보안 파일명. 정적 명명 규칙을 사용 증의 위험은 공격을 극적으로하기 때문에 공격은 이미 제공된 하나의 구성 요소입니다.

임시 파일의 존재로 인해 증 레이스 조건과 관련 불안, 여러 개의 운영 체제에는 임시 파일의 특정 기능을 작성하는 보안 방식입니다.

개발자는 또한 운영 체제를 사용하는 파일의 기본 -에 - 잠금 기능을 사용하여 파일의 액세스를 제어합니다. 이러한 방법을 제어 액세스의 근본적인 커널 구성 요소가있습니다.

을 사용하면 임시 파일, randomize 파일을 설정 강력한 권한 및 조직의 생성, 사용 및 제거의 파일을 최소화하기 공격가 능성이있습니다.

또 다른 구성 요소가 높아 안정성과 보안성을에 영향을 미칠 수있습니다 값을 반환하는 응용 프로그램입니다. 명백한 것 같다 수도 있지만, 스트레스의 필요성을 확인하는 것이 중요합니다의 함수 값을 반환합니다. 기능을 자주 실행 순차적와 의존의 결과 또는 데이터베이스에서 이전의 기능을합니다. 확인하여 이전의 함수의 반환 값은의 부양 기능이 실행로부터 보호와 잘못된 데이터가있습니다. 이벤트가없는 경우에도 공격, anomalous 조건에서 회복 증가 견고성의 응용 프로그램입니다.

이 예제가 난한 구현에 실패를 확인 반환 값 :

  해당 = do_string_check (문자열, valid_characters); / * 함수가 반환하는 int * / 
  경우 (해당 == good_return) 
  ( 
  process_string (문자열); 
  ) 

여기서는 구현이 허약하기 때문에 부정적인 경우, 나쁜 반환은 절대 취급합니다. 좀 더 나은 구현이

  해당 = do_string_check (문자열, valid_characters); / * 함수가 반환하는 int * / 
  경우 (해당! = good_return) 
  ( 
  special_error_processing_routine (해당); / * 잘못된 값, 무엇인 * / 
  ) 
  process_string (문자열); 

부정적으로 돌아가에 의해 처리 - 오류를 처리하는 루틴을 용납할 수 출구에서 프로그램을 요청하는 새 문자열, 또는 변환합니다 유효한 매개 변수로 반환 값입니다. 경우에 반환 값은 좋다, 그것 이동하는 과정을 루틴입니다.

를 작성하는 재사용 이벤트 및 오류 루틴을 제공하는 표준 메커니즘을하는 모든 응용 프로그램을 반응하는 다양한 공격과 문제가있습니다. 이러한 루틴을 포함 일반적인 유효성 검사 방법에 대한 아이디어에 대한 문자열과 숫자 값, 래퍼 기능을 수행할 수 무결성 검사, 및 보호 메커니즘이 유효성 변수와 메모리 위치합니다. 항상 점검하고 처리하는 함수의 반환 값은합니다.

그 다음 비트의 세부 관련된 민감한 정보의 사용 내에있는 응용 프로그램을 포함하여 비밀 번호, 암호화, 또는 기타 개인 정보를합니다. 이전에 언급한 바와 같이, 모든 프로그램 정보가 존재의 영역은 일반적인 풀의 메모리 읽기 및 수정할 수있는가를 조건으로하여 외부 절차에 의해합니다. 그것은 유익을 취소하여 메모리가 정보가 더 이상 사용되지 않도록하기 위해 드러내는 정보를 공격 중에있습니다. 가 장 일반적인 그리고 충분한 방법을 취소 데이터, 이것은 일반적으로 참조 제로 아웃 메모리가있습니다. 저장된 정보가 더 이상 필요하지 않은 경우는 스토리지 위치해야한다 씁 0 또는 임의의 데이터를 막기 침입자로부터 회복이 정보를 통해 메모리 또는 코어 덤프합니다. 이 절차를 진입 특히 중요 때 암호화가 사용됩니다. 키는 메시지를 암호화하고 해독하는 데 사용하는 것이가 장 중요 작품의 암호화 시스템, 그리고 그들의 모든가 능성을 보호하기 위해 필요가 이뤄져야합니다.

이러한 지침 exemplify 일부 c - 기반 응용 프로그램에서 발생할 수있는 일반적인 문제입니다. c은 매우 인기가하고 강력한 언어가 사용하면 큰 유연성을 제공합니다 개발자, 그리고 치료한다으로 사용합니다.

a 펄의 응용 프로그램

펄이 흥미로운 짐승이 결합된 대부분의 혜택은 구조적 프로그래밍 언어와 같은 c을 사용하여 유연성 및 통합 유닉스 쉘. 펄 수있는 개발자를 작성 절차 또는 서브루틴을 정의 변수, 그리고 활용하는 응용 프로그램 및 명령은 운영 체제와 함께 사용할 수있습니다. 이러한 기능, 및 그 강도와 함께 정규 표현식을 구문 분석을주는 펄이 강한 임재의 웹 응용 프로그램, 시스템 관리, 자동화.

펄 프로그램은 일반적으로하지 않습니다 쉽습가 버퍼 오버플로 인해 약하게 입력된 자연의 변수와 선언합니다. c와는 달리 런 변수와 메모리를 필요는 특정 스토리지 클래스로 정의와 메모리가 할당되어야합니다 그들을 펄하지 다로 문자열 데이터를 자동으로하고 모든 것을 취급합니다. 복용은 다음 예제 :

  #! / 경로 /로 / 펄 
  일달러 = 1; 
  $ one_s = "1"; # 아니오 다를 일달러 
  2달러 = 일달러 + $ one_s; # 그 결과는 2, 또는 "2",이 이에 상응 

에서 c, 일달러가 능성이 선언은 변수의 정수와 $ one_s을하는 문자열입니다. 추가 두 요소도 결과에 잘못된 값입니다. 펄 종류를 구분하지 않습니다 때문에, 이달러이 할당된 2 또는 "2"- 그들은 동급의 펄입니다. 하락의 언어도하지 않는다 먹이를 메모리 할당 요구 사항이 다른 언어로 전시합니다. 다음 예제는 완전 허용에 펄 :

  #! / 경로 /로 / 펄 
  $ var1 = "aaaaa"; 
  $ var2 = "bbbb"; 
  $ var2 = $ var1; # $ var2이 "aaaaa"; 

$ var2 소요에 새 값의 5 개 "를"문자가있습니다. 모든 변수가 동적으로 할당; 미리 저장 공간의 개념이없습니다 미칠 수있는 넘어갔습니다.

펄가 쉽습니다, 그러나 경쟁 조건과 외부 프로그램의 실행과 관련된 취약점입니다. 주의가 요구됩니다 시퀀싱의 함수에 부여합니다. 입력 유효성이 동등하게 중요 펄, 착취 방지하기 위해서는 외부 응용 프로그램입니다.

펄을 지원하는 기능을 열기 파일,와 비슷하게 c와 다른 언어, 따라서 임시 파일의 사용을 포함해야한다 적절한 권한과 창작 깃발입니다.

펄의 웹 - 기반의 사용 패턴을 프로그램도 매우 인기가있습니다. 가 장 큰 위험 요소와 연관된 그 사용이 환경에서는 입력을 확인하고 실행하는 동안 발생 외부 시스템 프로그램 내에서합니다. 이 응용 프로그램을 보호하기 위해, 여러주의 사항을 취할 수있습니다. taint - 수표를 사용하여 메커니즘의 펄, 모든 변수를 설정 밖의 프로그램 전달되지 않습니다하여 모든 프로그램을 실행하여 응용 프로그램이있습니다. 어떤 변수에 의해 설정 tainted 변수가 될 tainted. taint - 점검 모드는 피하고 취약점에 특히 유용합니다 런 체크되지 않은 사용자 변수가 통과 속닥 프로그램을가 펄 응용 프로그램에서 호출합니다. 을 초기화 버전 5는 펄은 taint - 검사 모드를 사용합니다 다음과 같은 스크립트를 헤더 :

  #! / 경로 /로 / 펄 - 톤 # 실행 taint - 점검 모드로 

그 다음주의는 구문을 분석할 입력 값을 메타 - 캐릭터와 원하지 않는 값으로을 제거합니다. 테러 공격으로부터 보호하는 데 도움이 악용 매개 변수 - 패스를 껍질과 다른 응용 프로그램입니다. 다음의 예제는 간단한 루틴이 검사는 입력 문자열에 대한 모든 메타 - 문자가 될 수있는 프로그램에 의해 해석 :

  $ unclean_input = & get_html_forms_response (); 
  만일 ($ unclean_input = ~ tr /;|`!#$&*()[]{) <>:'"//) 
  ( 
  # 인쇄 중 일부 html 여기를 나타내는 실패 
  & do_some_error_reporting (); 
  ) 

이 경우는 일상적인 오류가보고하는 메타 - 캐릭터가 발견된 경우입니다. 다른 방법을 대체 메타 - 자, 또는 메타 - 문자가 발견되지 않은 경우에만 계속합니다.

최종상의 이유는 다른 응용 프로그램을 사용하는 쉘을 실행합니다. 과 같이 유닉스 시스템 () 호출과 windows 실행이 ()를 호출, 시스템 () 호출에 펄 수있는 개발자를 실행하려면 다른 응용 프로그램입니다. 펄 함수가 실행이 () 호출은 유닉스 - 그렇게 통화에서 실행중인 프로세스는 지적은 프로그램에 의해 대체합니다. 이러한 기능은 특히 위험을 허용하는 환경에서 사용할 경우 사용자 입력과 같은 패턴을 프로그램 또는 시스템 유틸리티입니다. 입력 유효성 검사를하지 않는 경우가 발생 응용 프로그램을 이용할 수있는 프로그램을 실행하기 위해 임의의 시스템에 영향을 미칠 수있습니다. 다음 예제는 보여 불안의 시스템 ()을 사용하여 nonvalidated 입력을 사용합니다. 사용자가 제공한 정합의 문자열 사용자 이름; / 상자 / 로마 - rf /이 된 할당하여 변수 $ 입력 :

  시스템 ( "ecommerce_app $ 입력"); 

이것을 효과적으로 변환하여 / 상자 / 명암 ecommerce_app 사용자 이름; / 상자 / 로마 - rf /. 정하면하는 프로그램이 실행되고와 특권,이 프로그램은 실행하는 쉘을 실행하려면 이메일 - 상거래 응용 프로그램; 키보드의 쉘 세미콜론, 이는 명령을 구분 기호는 쉘; 다음 실행 로마 - rf를 지우는 전체 파일 시스템을 .

마일 자바 스페인 용담동 자바

자바은 비교적 최근의 발명은 세계의 분산 인터넷 컴퓨팅입니다. 그것이 나타을 결실의 개념의 플랫폼 - 독립적인 코드가있습니다. 자바 작품 서면으로 코드를 컴파일으로하는 특수 형식은 다음 실행에 자바가 상 머신입니다. 가 상 머신 (vm)는 플랫폼을 구체적하지만이 코드에서 실행되는 것은 아니다. 자바를 사용하면 웹 브라우저 및 원격 시스템을 실행을 더 복잡하고 대화형 어플 리케이션입니다. 웹 브라우저에 액세스하는 웹 사이트를받습니다 자바 애플릿은 서버에서입니다. 이 애플릿을 다음의 웹 브라우저를 실행하고 원래 웹 서버와 통신할 수있습니다. 언제을 도입, 자바 변형 정적 웹 페이지를 동적 및 흐르는 어플 리케이션입니다. 초반부터 일, 자바의 사용이 확대로 많은 다른 분산 응용 분야와 같은 네트워크 관리, 임베디드 인터넷 기기, 기타 유틸리티 기능이있습니다.

자바는 벌금 예제는 언어를 누구의 개발자로 간주 보안 년대 초반 설계 단계입니다. 초기 버전의 자바는 잘 - 문서화 보안 아키텍처, 전화를 샌드 박스, 그 방해 자바 애플릿이나 응용 프로그램에서 시스템 자원에 접근합니다. 자바로의 사용을 확장하기 시작했다가 필요가 발생 시스템 리소스에 대한 액세스 권한을 외부의 샌드 박스입니다. 의 첫 번째 버전의 자바 개발 키트를 제공하고 서명된 애플릿을 사용합니다. 애플릿의 모델에 대해 설명에 디지털 서명을 확인하는 그 창조주입니다. 경우에 디지털 서명이 확인 애플릿은 그 다음에 의해 신뢰할 수있는 로컬 시스템, 기타 시스템 리소스에 대한 액세스를 허용하는 애플릿입니다. 이 디지털 서명 방식에는 공정 액수의 복잡한 프로그래밍가 올바르게 작동합니다. 그것은 또한 중요하게 참고하는 방법이 보안 모델은 디지털 서명이 자바 애플릿이 결함입니다. 누구나 기호 애플릿이있습니다. an 악의적인 애플릿을 다운로드하실 수있습니다 서명한는 공격자와 웹 브라우저에 의해합니다. 웹 브라우저를 효과적으로 확인하는 악의적인 애플릿이 실제로는 공격자에 의해 작성하고 다음을 행복하게 실행 그것을 위해 어떤 결과가 프로그래밍된은 그것입니다.

의 현재와 두 번째 iteration의 자바 보안 아키텍처는 이전 버전에 비해 훨씬 더 강력하고 유연합니다. 이를 통해 자바를 입력 많은 영역의 응용 프로그램 개발 이전에 그 능력을 넘어입니다. 새로운 자바 보안 아키텍처를 사용하는 보안 정책 및 액세스 제어 방법을 쉽게 정의 애플릿이나 응용 프로그램에 대한 액세스를 허용하는 구체적인 자료를 다양한 각도입니다. 와 관련하여 지침을 제시 여기서, 자바 설계자 분석의 다양한 상호 작용을하고 취약점을 선물로 분산 인터넷 응용 프로그램 및 도착한 높은 보안과 함께 극단적인 유연성을 제공하는 하나의 모델입니다. 에 대한 전체 문서에 자바와 그 api, http://java.sun.com을 참조하십시오.

쉘 게임 및 유닉스

유닉스 쉘 양식의 기반의 사용자 상호 작용으로 유닉스 시스템입니다. 껍질이 명령 - 라인 통역을 지원하는 어떤 수준의 자동화 및 프로그래밍의 형태 쉘 스크립트가있습니다. 이러한 스크립트는 자주 사용을 자동화 시스템 작업, 반복 작업을 수행하고 패턴을 웹 응용 프로그램을 실행합니다. 와 같이 펄, 지역의 잠재적인 위험이 입력을 검증, 레이스 조건, 상호 작용과 외부 파일과 프로그램, 그리고이 단체의 기능을합니다.

이 유닉스, 특혜 작업을 실행할 수있습니다 특권에 의해 사용자가, 또는 이들 특권 사용자로서 실행하도록 설정할 수있습니다. 이 미묘한 차이를 두 방법입니다. 모든 파일은 유닉스 시스템을 포함한 애플 리케이션,이 한 세트의 특성을 포함하는 사용자 및 그룹 소유권을, 그리고 한 세트의 권한을 플래그합니다. 결합, 그들에 대한 액세스를 허용 파일을 엄격히 통제된다. 일반적인 어플 리케이션을가 소유하고있는 사용자에 따라 액세스 권한을, 그들에 의해서만 실행할 수있습니다 소유자,하는 그룹, 혹은 누구나이 시스템에 의해합니다. 의 응용 프로그램을 실행하여 사용자의 권한을 상속합니다. 루트 권한이 필요한 응용 프로그램에 의해 실행될 수있습니다 비 - 루트 사용자,하지만, 언제 사람 포인트를 어디에 더 높은 권한이 필요, 그것이 실패하게됩니다. 이것을 극복하고 정상적인 사용자가 액세스할 수 있도록 특정 권한이 함수, 유닉스를 제공합니다 setuid 및 setgid 플래그입니다. 활성화되면, 그들로 인해이 응용 프로그램을 실행하려면 해당 응용 프로그램의 소유자 또는 그룹에 대해 - 그들 설정하는 사용자 아이디 (uid)의 응용 프로그램을 게재할를 소유한 것이됩니다.

다양한 패턴과 시스템 프로그램 시스템 리소스에 대한 액세스를 필요로하고있다 setuid 루트입니다. 이 제품 컴파일된 프로그램과 같은 c 프로그램 및 스크립트를 비롯한 펄과 유닉스 쉘. 경험 많은 유닉스 사용자와 개발자가 종종 위험에 대한 경고의 setuid 쉘 스크립트가 루트 권한을 제공합니다. 앞에서 설명한 것처럼, 입력 유효성 검사 및 레이스 조건이 쉽게 이용할 경우에 스크립트가 제대로 보호되지 못하고있습니다. 를 실행하는 스크립트로 권한이 사용자,보다 쉬운 방법을 넘겨주는 없다는 키를 약한 쉘 스크립트를보다가 성입니다. 이러한 스크립트는 특히 위험한 때 보안 조치를하지 않고 있기 때문에 프로그래밍된 쉘은 대화형으로 자연을합니다. 사용자가 공급 입력, 그리고 쉘를 수행하는 기능을합니다. 펄이 많은 건물 -의 견제와 균형을 허용하는 안전한 setuid 사용량입니다.

인터넷 기기

인터넷 어플 라이언 스는 이러한 시스템 및 장치 누구의 전체 목적은 인터넷 컴퓨팅입니다. 모두의 디자인 지침, 프로그래밍 언어 고려 사항, 취약점, 그리고 운영 패러다임은 직접 관련이 인터넷 기기입니다. 인터넷 어플 라이언 스를 자주 사용 일반적인 운영 체제, 응용 프로그램 및 방법으로 자신의 목표를 달성합니다. 응용 프로그램의 개발을 다음과 같이 경우에이 경로를 지불할 특별한 관심을가의 모든 정보가 여기에 제시합니다. 일부 인터넷 어플 라이언 스가 개발한 처음부터 새로 개발된 디자인과 기술을 통합 불과합니다. 평 보안 위험에 대한 이러한 시스템이 필요 여분의 근면. 를 통합하는 것이 특히 중요 보안을 설계 프로세스를 처음부터 시작하면됩니다.

이것은 문서들 의해 tamas querolin
면책 조항 : 우리의 웹사이트가 포함되어있는 정보는이 문서에 대해 책임을지지 않습니다. 본 문서를 어떠한 방식 으로든 반영합니다 조회, 의견, 생각이나 신념의 기사를 디렉토리 직원입니다.

번역을 고지 :이 문서 "보안 코딩 관행"는 번역하는 자동 번역 서비스를 사용합니다. 우리가 진심을 끼쳐 드려 번역 오류가 발생했습니다. 이해에 감사드립니다.

Online: 655 users browsing the articles directory