>백엔드 개발 >PHP 튜토리얼 >PHP 사용자가 제출한 데이터

PHP 사용자가 제출한 데이터

伊谢尔伦
伊谢尔伦원래의
2016-11-22 10:41:211062검색

많은 PHP 프로그램의 주요 약점은 PHP 언어 자체의 문제가 아니라 프로그래머의 낮은 보안 인식에서 비롯됩니다. 따라서 잘못된 데이터 제출로 인해 발생할 수 있는 영향을 발견하려면 각 코드 부분에서 발생할 수 있는 문제에 항상 주의를 기울여야 합니다.

예제 #1 위험한 변수 사용

<?php
    // 从用户目录中删除一个文件,或者……能删除更多的东西?
    unlink ($evil_var);
   // 记录用户的登陆,或者……能否在 /etc/passwd 添加数据?
   fwrite ($fp, $evil_var);
    // 执行一些普通的命令,或者……可以执行 rm -rf * ?
    system ($evil_var);
    exec ($evil_var);
?>

항상 코드에 주의를 기울여 클라이언트에서 제출된 모든 변수가 제대로 검사되었는지 확인하고 다음 질문을 자문해 보세요.

이 스크립트는 의도한 파일에만 영향을 미치나요?

비정상적인 데이터를 제출하면 효력이 발생하나요?

이 스크립트가 의도하지 않은 목적으로 사용될 수 있나요?

이 스크립트를 다른 스크립트와 결합하여 나쁜 일을 할 수 있나요?

모든 거래가 적절하게 문서화되어 있습니까?

코드를 작성할 때 스스로에게 다음 질문을 해보세요. 그렇지 않으면 나중에 보안을 강화하기 위해 코드를 다시 작성해야 할 수도 있습니다. 이러한 문제에 주의를 기울이면 시스템의 보안을 완전히 보장할 수는 없더라도 최소한 보안성을 향상시킬 수는 있습니다.

또한 프로그래밍을 더욱 편리하게 해주지만 변수의 합법성, 소스 및 값을 망칠 수 있는 Register_globals, Magic_quotes 또는 기타 설정을 끄는 것도 고려해 보세요. 개발 중에 error_reporting(E_ALL) 모드를 사용하면 변수를 사용하기 전에 검사 또는 초기화되었는지 확인하여 비정상적인 데이터가 엉망이 되는 것을 방지할 수 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.