인터넷에 있는 대부분의 사람들은 착하고 정직한 사람들이다. 하지만, 몇몇 사람들은 웹사이트를 뒤지고 보안 구멍을 찾음으로써 재미를 얻는다. 몇 가지 간단한 팁은 기본적인 방법으로 당신의 웹사이트를 보호하는데 도움을 줄 수 있다. 자, 명백히 데이터 보안의 주제는 이 칼럼의 범위를 벗어나는 복잡한 하나와 방법이다. 하지만, 나는 사람들이 해서는 안 되는 것들을 볼 수 있게 해줄 수 있는 많은 잠재적인 문제들을 완화시킬 수 있는 기본 사항들을 다룰 것이다.
암호 보호 디렉터리
서버에 개인으로 남아 있어야 하는 디렉토리가 있는 경우, 디렉토리 이름을 추측하지 않도록 다른 사용자에게 의존하지 마십시오. 서버 수준에서 폴더를 암호로 보호하는 것이 좋다. 50% 이상의 웹 사이트는 Apache 서버에 의해 작동되므로 Apache에서 디렉터리를 암호로 보호하는 방법에 대해 알아보자.
Apache는 디렉토리에 있는 .htaccess라는 파일을 통해 구성 명령을 취한다. .htaccess의 명령은 특정 하위 폴더에 고유한 .htaccess 파일이 없는 한 해당 폴더와 하위 폴더에 영향을 미친다. 폴더를 암호로 보호하기 위해 Apache는 .htpasswd라는 파일도 사용한다. 이 파일에는 접근 권한을 부여받은 사용자의 이름과 비밀번호가 수록되어 있다. 비밀번호는 암호화되어 있으므로 반드시 htpasswd 프로그램을 사용하여 비밀번호를 작성해야 한다. 액세스하려면 서버의 명령줄로 이동하여 htpasswd를 입력하십시오. “명령어를 찾을 수 없음” 오류가 표시되면 시스템 관리자에게 문의하십시오. 또한, 많은 웹 호스트들은 디렉토리를 보호하기 위한 웹 기반 방법을 제공하므로, 그들은 당신이 혼자 하는 것이 아니라 그렇게 하도록 설정된 것들을 가질 수 있다는 것을 명심하라. 이것을 제외하고, 계속합시다.
“myusername”이(가) 원하는 사용자 이름인 “htpasswd -c .htpasswd myusername”을 입력하십시오. 그러면 암호를 요청받게 될 것이다. 확인하면 파일이 생성된다. FTP를 통해 이중으로 확인할 수 있다. 또한 파일이 웹 폴더 안에 있으면 일반인이 접근할 수 없도록 파일을 이동시켜야 한다. 이제 .htaccess 파일을 열거나 만드십시오. 내부에는 다음을 포함한다.
AuthUserFile /home/www/passwd/.htpasswd
AuthGroupFile /dev/null
AuthName “보안 폴더”
AuthType Basic
유효한 사용자가 필요하다.
첫 번째 줄에서 .htpasswd 파일이 있는 위치로 디렉터리 경로를 조정하십시오. 설정이 완료되면 웹 사이트의 해당 폴더를 방문할 때 팝업 대화상자를 볼 수 있다. 그것을 보려면 로그인해야 할 것이다.
디렉터리 목록 끄기
기본적으로 인식된 홈페이지 파일(index.htm, index.php, default.htm 등)이 없는 웹 사이트의 디렉토리는 해당 폴더에 있는 모든 파일의 목록을 대신 표시한다. 당신은 사람들이 당신이 가지고 있는 모든 것을 보는 것을 원하지 않을지도 모른다. 이를 방지하기 위한 가장 간단한 방법은 빈 파일을 만들고 이름을 index.htm으로 지정한 다음 해당 폴더에 업로드하는 것이다. 두 번째 옵션은 다시 .htaccess 파일을 사용하여 디렉터리 목록을 사용하지 않도록 설정하는 것이다. 이렇게 하려면 파일에 “Options -Indexes” 줄을 포함하십시오. 이제 사용자들은 파일 목록보다 403개의 오류를 갖게 될 것이다.
설치 파일 제거
웹 사이트에 소프트웨어 및 스크립트를 설치하는 경우 설치 및/또는 업그레이드 스크립트와 함께 제공되는 경우가 많다. 다른 사용자가 해당 소프트웨어에 익숙한 경우 설치/업그레이드 스크립트를 찾아 실행할 수 있기 때문에 이러한 스크립트를 서버에 두면 보안 문제가 크게 발생하며, 따라서 전체 데이터베이스, 구성 파일 등을 재설정할 수 있다. 잘 작성된 소프트웨어 패키지는 소프트웨어 사용을 허용하기 전에 이러한 항목을 제거하도록 경고할 것이다. 그러나 이 작업이 완료되었는지 확인하십시오. 서버에서 파일을 삭제하십시오.
보안 업데이트 유지
그들의 웹사이트에서 소프트웨어 패키지를 실행하는 사람들은 그 소프트웨어와 관련된 업데이트와 보안 경고에 계속 연락할 필요가 있다. 그렇게 하지 않는 것은 해커들에게 활짝 열어둘 수 있다. 실제로, 여러 번 눈에 띄는 보안 구멍이 발견되고 보고되며 소프트웨어의 제작자가 이를 위한 패치를 출시하기까지는 지연이 있다. 그렇게 마음이 기울어진 사람은 누구나 소프트웨어를 실행 중인 당신의 사이트를 찾을 수 있고 만약 당신이 업그레이드하지 않는다면 그 취약성을 이용할 수 있다. 나 자신도 이 일로 인해 몇 번이고 모든 포럼이 파괴되고 백업으로부터 복구되어야만 했다. 그것은 일어난다.
오류 사설토토 보고 수준 감소
여기서 PHP를 위해 주로 말하는 것은 내가 일하는 것이기 때문에 PHP에 의해 생성되는 오류와 경고는 기본적으로 당신의 브라우저에 완전한 정보로 인쇄된다. 문제는 이런 오류들이 대개 해당 스크립트에 대한 전체 디렉토리 경로를 포함하고 있다는 점이다. 그것은 너무 많은 정보를 준다. 이를 완화하기 위해 PHP의 오류 보고 수준을 낮추십시오. 너는 이것을 두 가지 방법으로 할 수 있다. 하나는 php.ini 파일을 조정하는 것이다. 이것은 서버의 PHP에 대한 기본 구성이다. error_reporting 및 display_errors 지시문을 확인하십시오. 그러나 이 파일에 대한 액세스 권한이 없는 경우(공유 호스팅에 있는 많은 경우, PHP의 error_reporting() 함수를 사용하여 오류 보고 수준을 줄일 수도 있다. 이 스크립트를 전체 스크립트의 글로벌 파일에 포함시켜 일괄적으로 작동되도록 하십시오.
양식 보호
서식을 통해 해커를 제대로 코드화하지 않을 경우 서버에 넓은 구멍을 뚫으십시오. 이러한 양식은 대개 서버의 일부 스크립트에 제출되기 때문에, 때때로 데이터베이스에 대한 접근 권한으로, 일부 보호를 제공하지 않는 양식은 해커에게 모든 종류의 사물에 대한 직접 액세스를 제공할 수 있다. 주소 필드가 있고 앞에 “주소”라고 쓰여 있다고 해서 사람들이 해당 필드에 주소를 입력하도록 신뢰할 수 있는 것은 아니라는 점을 명심하십시오. 양식이 제대로 코드화되지 않았고 양식이 제출하는 스크립트도 제대로 코드화되지 않았다고 가정해 보십시오. 해커가 SQL 쿼리를 입력하거나 해당 주소 필드에 스크립팅 코드를 입력하지 못하도록 하는 방법 이 점을 염두에 두고 다음과 같은 몇 가지 사항을 살펴보고자 한다.
MaxLength를 사용하십시오. 양식의 입력 필드는 HTML의 maxlength 속성을 사용하여 양식의 입력 길이를 제한할 수 있다. 사용자가 너무 많은 데이터를 WAY에 입력하지 않도록 하려면 이 옵션을 사용하십시오. 이것은 대부분의 사람들을 멈추게 할 것이다. 해커는 이를 우회할 수 있으므로 스크립트 수준에서도 정보의 오버런을 방지해야 한다.
전자 메일 숨기기 양식에 전자 메일 주소를 포함하지 마십시오. 그것은 요점을 찌르고 스팸 거미는 여전히 당신의 이메일 주소를 찾을 수 있다.
양식 검증을 사용하십시오. 나는 여기서 프로그래밍에 대한 수업을 듣지 않을 것이다. 그러나 양식이 제출하는 모든 스크립트는 수신한 입력의 유효성을 확인해야 한다. 수신된 필드가 예상된 필드인지 확인하십시오. 수신 데이터의 길이가 합리적이고 예상된 길이이며 형식이 올바른지 확인하십시오(전자 메일, 전화, zip 등의 경우).
SQL 주입을 피하십시오. SQL 주입에 대한 전체 레슨은 다른 기사에 예약할 수 있지만, 기본은 양식 입력이 유효성 검사 없이 SQL 질의에 직접 삽입될 수 있도록 허용하고, 따라서 해커가 당신의 웹 양식을 통해 SQL 질의를 실행할 수 있도록 하는 것이다. 이를 방지하려면 항상 수신 데이터의 데이터 유형(숫자, 문자열 등)을 확인하고, 위에 따라 적절한 양식 검증을 실행하고, 해커가 양식에 쿼리를 삽입할 수 없도록 쿼리를 작성하십시오.
결론
웹사이트 보안은 다소 관련된 주제여서 이것보다 훨씬 더 기술적인 것을 얻는다. 그러나 나는 당신의 웹사이트에 대한 대부분의 위협을 완화시키기 위해 당신이 당신의 웹사이트에서 할 수 있는 몇 가지 더 쉬운 일들에 대한 기본적인 입문서를 당신에게 주었다.