WordPress 플러그인 및 테마 개발자를 위한 16가지 보안 팁

게시 됨: 2021-10-19

하나는 너무 조심할 수 없습니다!

개발자로서 우리가 하는 일의 큰 부분은 우리가 구축하고 있는 사이트와 플러그인이 안전한지 확인하는 것입니다.

기업은 점점 더 복잡해지는 기능을 갖춘 더 빠른 솔루션이 필요합니다. 이는 좋은 진전이지만 복잡한 프로젝트를 구축하려면 적절한 보안 설정도 필요합니다. WordPress 보안은 웹 사이트 개발의 가장 중요한 측면 중 하나입니다.

기능의 복잡성이 증가함에 따라 많은 개발자가 기본 웹 사이트 및 웹 응용 프로그램 개발 보안 원칙을 놓치고 있습니다. 그 결과 사이버 공격 및 기타 위험에 노출된 결함 있는 웹사이트가 생성됩니다.

따라서 프로젝트를 빌드하는 동안 몇 가지 기본 웹 사이트 및 웹 애플리케이션 개발 보안 프로토콜을 구현하는 것이 필수적입니다.
다음은 사이트를 안전하고 건전하게 유지하는 데 도움이 되는 웹 개발자를 위한 16가지 보안 팁입니다.

1. 보호가 필요한 데이터 파악

가장 중요한 웹사이트 개발 보안 원칙 중 하나는 필요한 데이터만 저장하면 된다는 것입니다.
프로젝트를 개발할 때 다음 세 가지 질문을 해야 합니다.

  • 회사는 어떤 데이터를 저장해야 합니까?
  • 회사에서 암호화해야 하는 민감한 데이터는 무엇입니까?
  • 어떤 이유로 데이터가 손상되면 회사에 얼마나 피해를 줄 수 있습니까?

더 민감한 데이터를 저장할수록 노출 위험이 커집니다. 민감한 데이터를 저장해야 하는 경우 액세스하기 어렵게 되도록 암호화해야 합니다.

2. 역할 관리 및 접근 제어 구현

웹 사이트, 플러그인 또는 테마를 디자인할 때 사용자에게 가능한 한 가장 낮은 권한을 부여하는 것이 중요합니다.

사용자가 필요한 것만 얻고 다른 영역에는 액세스할 수 없도록 권한을 제한해야 합니다.

예를 들어, 기고자는 새 게시물과 페이지를 만들 수 있지만 게시할 수 없도록 제한되어야 합니다. 편집자는 새 게시물을 만들고 게시할 수 있어야 하지만 디자인이나 플러그인을 변경할 수는 없습니다.

마찬가지로, 플러그인이나 테마에서 제한하려는 특정 기능을 개발하는 동안 설치하는 동안 새 WordPress 사용자 역할을 만들어야 합니다. 관리자에게 이러한 사실을 알리면 개발 중인 플러그인이나 테마를 사용할 각 사용자에게 올바른 역할이 할당됩니다.

다음은 구조가 어떻게 생겼는지에 대한 빠른 그림 표현입니다.

역할 관리 및 접근 제어 구조

이 접근 방식은 침입자가 할 수 있는 피해를 제한할 수 있기 때문에 문제를 최소화합니다. 또한 호기심 많은 사용자가 실제로 있어서는 안 되는 웹사이트 영역을 어지럽히는 오류나 실수로 인한 피해를 제한할 수 있습니다.

또한 역할에 따라 개발 팀 내에서 액세스를 제한해야 합니다.

3. 인증 적용

웹사이트 인증은 사용자가 웹사이트의 제한된 영역에 액세스하기 위해 신원을 확인할 수 있는 보안 프로세스입니다.

테마 또는 플러그인을 개발하는 동안 일부 데이터가 사용자에게 표시되는 동안 제한해야 하는 특정 데이터가 있습니다. 따라서 제한된 데이터에 액세스하는 사용자가 인증되고 올바른 사용자 역할이 있는지 확인하기 위해 코드에 검사를 추가하는 것이 중요합니다.

마찬가지로 웹 사이트를 구축할 때 강력한 암호 적용 및 다단계 인증과 같은 효과적인 계정 관리 방식을 구현하여 사용자 데이터를 보호할 수 있습니다.

이중 인증은 인증을 구현하는 가장 널리 사용되는 방법 중 하나입니다.

2FA(2단계 인증)는 웹사이트 비밀번호와 별도로 사이트에 로그인하기 위해 추가 코드 또는 OTP(일회성 비밀번호)가 필요한 2단계 프로세스입니다. 이 OTP는 일반적으로 문자 메시지, 전화 통화 또는 Google Authenticator, Authy, Duo Security 등과 같은 인식된 2FA 애플리케이션을 통해 다른 장치로 전송됩니다. 2FA를 구현하면 무차별 대입 공격으로부터 안전하게 보호할 수 있습니다.

WordPress에서 웹 사이트를 구축하는 경우 웹 사이트를 보호할 수 있는 놀라운 도구를 확인하십시오.

  • 로그인 시도 제한: 이 도구는 로그인 시도 횟수를 제한하여 무차별 대입 공격으로부터 안전하게 보호합니다. 스팸 방지 및 자동화된 비활성 사용자 로그아웃도 포함됩니다.
  • WP2 FA: WP2FA 플러그인을 사용하면 웹사이트에 2단계 인증을 즉시 추가할 수 있습니다. 또한 Google Authenticator, Authy, FreeOTP, Duo Security 등과 같은 여러 2FA 앱을 지원합니다.
  • Shield Security: 이 플러그인은 Google Authenticator 및 SMS 2FA와 같은 2FA 앱을 지원하지 않지만 YubiKey를 사용하는 사람들에게 유용합니다.
  • WPassword: 이 플러그인을 사용하면 WordPress 웹사이트에 강력한 암호를 적용하고 로그인 시도가 너무 많이 실패한 사용자를 차단하는 등의 작업을 수행할 수 있습니다. WooCommerce 및 기타 타사 플러그인과 원활하게 통합됩니다.

4. 테마 또는 플러그인을 출시하기 전에 확인하십시오.

테마나 플러그인이 출시되기 전에 코드에 가능한 한 오류가 없는지 확인해야 합니다. 특정 작성기 종속성을 사용하여 코드의 취약점을 감지할 수 있습니다.

WordPress 웹 사이트에 권장되는 종속성 중 일부는 다음과 같습니다.

  • Wpthemereview
  • Wp 코딩 표준

이러한 코딩 표준에는 데이터를 인쇄하기 전에 항상 이스케이프 처리하고, 모든 요청에 ​​대해 nonce를 사용하고, 요청 데이터를 사용하기 전에 삭제하고, 적절한 사용자 권한을 제공하는 등 코드를 보호하는 데 도움이 되는 엄격한 코딩 규칙이 있습니다.

이러한 도구는 고유한 테마 또는 플러그인을 개발하는 경우에 유용합니다.

WPScan 보안 스캐너도 확인해야 합니다. 웹사이트에 취약점이 있는지 확인하는 훌륭한 온라인 웹사이트 보안 스캐너입니다.

5. 특정 PHP 함수 피하기

eval() 및 unserialize()와 같은 특정 PHP 함수는 시스템 데이터를 노출할 수 있으며 서버 데이터를 노출시켜 서버를 종료하거나 해커의 모든 서버 정보에 액세스할 수 있습니다.

다음은 가능한 피해야 하는 몇 가지 PHP 함수입니다.

eval() : eval은 임의의 PHP 코드를 실행할 수 있습니다. 제대로 사용하지 않으면 코드가 주입 공격에 노출될 수 있습니다.

serialize() 또는 unserialize(): 사용자 제공 입력과 함께 serialize() 또는 unserialize()를 사용하지 마십시오. 공격자는 이러한 기능을 악용할 수 있습니다. 직렬화된 임의의 개체가 있는 문자열을 전달하여 임의의 코드를 실행할 수 있습니다.

md5() : 인터넷은 md5() 암호화 취약점에 대한 리뷰로 가득 차 있습니다. 1 안전하지 않은 것으로 간주됩니다. SHA-2와 같은 더 나은 해싱 기능을 사용하십시오.

sha1() : sha1()은 해싱 알고리즘의 빠른 특성 때문에 사용해서는 안되는 또 다른 해싱 함수입니다. 모든 최신 프레임워크에서 md5() 대신 SHA-2 해싱 알고리즘을 사용하는 것이 좋습니다.

6. 린터를 사용하여 코드에서 문제 찾기

린트 도구는 소스 코드에서 프로그래밍 및 문체 오류를 검사하는 기본 정적 코드 분석기입니다. Linter의 음성 출력 톤은 프로젝트를 계속 진행시키기 위해 친근해야 합니다.

린트 코드는 웹사이트나 앱을 개발하는 동안 잠재적인 취약점을 찾고 오류를 줄이는 좋은 방법입니다. PHP, JS 및 HTML 개발에 특정 보안 린터를 사용할 수 있습니다.

다음은 PHP 코드의 정적 분석을 위한 몇 가지 주목할만한 도구입니다.

  • PHP 병렬 린트
  • 소나린트
  • 찬송가
  • PHP 린트

HTML 및 Javascript 린팅에도 SonarLint를 사용할 수 있습니다.

다른 주목할만한 JS 린터는 다음과 같습니다.

  • JS 린트
  • ES 린트

7. 사용하지 않는 코드 및 플러그인 제거

소프트웨어가 점점 더 복잡해짐에 따라 코드의 취약점 가능성도 높아집니다. WordPress 테마와 플러그인도 다르지 않습니다. HTML5, CSS 및 JavaScript와 같은 코드의 계속 증가하는 기능을 통해 개발자는 풍부한 웹 앱을 빌드할 수 있습니다.

그러나 애플리케이션의 복잡성 증가는 양날의 검입니다. 사용자가 기대하는 기능을 제공하는 데 도움이 되는 동시에 애플리케이션의 공격 표면을 확장합니다. 이러한 취약점을 처리하는 한 가지 방법은 사용되지 않는 코드를 제거하는 것입니다.

다른 사용자는 웹 사이트 또는 웹 응용 프로그램의 모든 기능이 필요하지 않을 수 있습니다. 각 배포에서 사용자 요구 사항에 따라 불필요한 기능을 제거하여 공격 표면 및 관련 위험을 줄일 수 있습니다.

WordPress에서 웹 사이트를 개발하는 것을 좋아한다면 코드 측면에서 경량이면서 요구 사항을 충족하는 테마와 플러그인을 사용하는 것이 좋습니다. 웹사이트를 안전하게 보호할 뿐만 아니라 검색 엔진 최적화에도 도움이 됩니다. 다음은 사용 가능한 가장 가볍고 빠른 WordPress 테마입니다.

8. 서버 측 및 클라이언트 측 유효성 검사 사용

사용자 정의 코드 작성을 좋아하는 사람이라면 클라이언트 측 및 서버 측 유효성 검사를 모두 사용하는 것이 필수적입니다. 클라이언트 측 유효성 검사는 사용자가 데이터를 잘못 입력하거나 필드를 잊어버리는 등의 일반적인 실수를 방지하는 데 도움이 됩니다. 이러한 유효성 검사는 유효하지 않은 데이터가 서버에 도달하기 전에 포착하여 시간과 비용을 절약합니다.

클라이언트 측 유효성 검사가 서버로의 왕복이 실패한 후에만 발생하는 경우 사용자가 실수를 즉시 수정하도록 허용하지 않고 무엇을 잘못했는지 알려주는 지연에 직면하게 될 것이라고 상상해 보십시오.

그러나 클라이언트 측 유효성 검사만으로는 보안 조치로 충분하지 않습니다. 또한 서버 측 유효성 검사를 사용해야 합니다. 서버 측 유효성 검사는 악의적인 입력 및 기타 공격 벡터로부터 사용자를 보호합니다.

9. 모든 사용자 입력 및 요청 데이터 삭제

사용자 입력 삭제(User Input Sanitization)는 시스템에 유해한 코드가 삽입되는 것을 방지하기 위해 무단 또는 원치 않는 문자 및 문자열의 사용자 및 API 데이터를 감사, 정리 및 필터링하는 사이버 보안 조치입니다.

해커는 특정 명령을 삽입하고 웹사이트의 보안을 손상시킬 수 있는 작업을 실행할 수 있습니다. 입력 삭제는 데이터 무결성을 유지하고 시스템 보안을 향상시키는 데 도움이 됩니다.

10. 영구 수정 적용

보안 검사를 수행하는 동안 때때로 계속해서 나타나는 몇 가지 취약점을 발견할 수 있습니다. 부분 패치를 추가하는 대신 영구적으로 근절할 수 있도록 새로운 취약점의 근본 원인을 파악해야 합니다.

예를 들어, 개발하는 테마나 플러그인에서 SQL/XSS 문제를 자주 접할 수 있습니다. 이 경우 각 입력에 대한 위생 검사를 구축하는 대신 기능/클래스를 구축하고 사용자 입력이 있을 때마다 모든 데이터가 이 클래스/기능을 통해 전달되어야 하는 정책을 만듭니다.

11. 잘못된 보안 구성 및 기본값 방지

보안 설정 오류는 보안 설정이 정의 및 구현되지 않고 기본값이 유지될 때 발생합니다. 보안 제어를 구현하지 않거나 오류와 함께 구현하면 구축하는 테마, 플러그인 또는 웹사이트에 취약점이 있을 가능성이 높아집니다.

잘못된 구성은 시스템, 데이터베이스 관리자 또는 개발자가 응용 프로그램의 프레임워크를 올바르게 구성하지 않아 해커에게 위험한 열린 경로로 이어지는 경우가 많습니다.

기본 설정이 안전한지 확인하고 암호를 자동으로 설정하지 마십시오(필요한 경우). 예를 들어 플러그인이 사용자가 파일을 업로드할 수 있는 디렉토리를 사용하는 경우 항상 사용자에게 비밀번호와 디렉토리 경로를 설정하도록 요청하십시오.

12. 최신 정보 및 최신 정보 유지

사이버 보안은 끊임없이 진화하는 분야입니다. 최신 보안 업데이트와 새로운 위험에 대해 알고 있어야 개발 상황을 파악하고 코드에 대한 새롭고 새로운 위협을 완화할 수 있습니다.

개발자로서 뉴스에 대한 정보를 얻고 더 안전한 코드를 작성하고 코딩을 보호하고 코드를 더 잘 정리하고 사용자 입력을 더 잘 처리하는 모범 사례가 무엇인지 작성하는 데 도움이 됩니다.

이렇게 하려면 온라인에서 전문가를 팔로우하고 즐겨찾는 웹 개발 블로그로 최신 정보를 얻으십시오. 당신은 이미 이 글을 읽고 있습니다. 좋은 출발을 하고 있습니다.

다음은 WordPress Security에 대한 최고의 리소스입니다.

  • WP 화이트 시큐리티 블로그
  • 워드펜스 블로그
  • 스쿠리 블로그

13. 코드 유지

오늘 작성한 코드가 내일은 안전하지 않을 수 있습니다. 새로운 취약점 변종이 계속 등장하고 있으며 개발자 입장에서도 지속적인 업그레이드가 필요합니다.

플러그인이나 테마에 새로운 기능을 추가할 때 다른 모듈이나 클래스의 보안이나 코드의 기능에 영향을 미치지 않는지 확인하십시오. 이러한 경우 문제를 해결하기 위해 코드를 업데이트해야 합니다.

GitHub와 같은 도구를 사용하여 테마 또는 플러그인의 코드를 유지할 수도 있습니다. 코드를 추적하고 문제를 더 빨리 수정하는 데 도움이 됩니다. 보안은 항상 진화합니다. 최신 트렌드에 발맞추기 위해서는 보안 테스트를 지속적으로 갱신하여 취약점을 찾아 개선하는 것이 중요합니다.

14. 소프트웨어 패키지를 정기적으로 업데이트하십시오.

당연한 일입니다.

PHP, Javascript, HTML 및 기타 소프트웨어 패키지를 최신 상태로 유지하면 새로운 보안 문제를 해결하는 데 도움이 됩니다. 소프트웨어 보안을 개선하는 것은 항상 지속적인 관심사이며, 이를 위해 우리는 항상 그러한 소프트웨어의 최신 버전을 유지합니다.

15. 팀과 협업

지원 팀에 제출된 보안 티켓을 기록해 두십시오. 고객이 보안 문제를 보고하는 경우 해당 문제를 해결하는 것을 우선 순위로 지정하십시오. 최종 사용자가 작업에 대한 최고의 피드백을 제공하므로 잘 사용하십시오!

개발 팀과 보안 문제를 논의하고 개발한 모든 패치가 보안 문제를 수정하고 공개하기 전에 다른 어떤 것도 손상시키지 않는지 확인하십시오. 팀 동료와 자주 공동 작업을 해야 하거나 전체 부서가 지원과 관련된 대규모 고객과 작업해야 하는 경우 웹 세미나 소프트웨어를 사용하여 프로세스를 용이하게 하는 것이 좋습니다.

16. 최악의 시나리오에 대비하라

너무 조심할 수 없습니다. 웹과 웹에 게시된 모든 것은 100% 안전할 수 없습니다. 그러나 위험을 완화하는 데 도움이 될 수 있는 조치를 취할 수 있습니다.

핵심은 잠재적 취약성을 평가하고 적절한 보안 조치로 적절한 위험 대응책을 개발하는 것입니다. 새로운 공격 기술이 자주 나타나므로 모범 사례도 이 프로세스의 일부로 발전해야 합니다.

예를 들어 워드프레스 웹사이트가 해킹당했다면 비상 계획에는 해킹 발생 시 대처 방법이 포함되어야 합니다. 여기에는 백업 방법, 정리 프로세스, 웹사이트를 재구축하고 서비스를 복원하는 데 필요한 단계가 포함되어야 합니다.

이러한 계획을 통해 모든 이해 관계자는 정보 과부하에 압도되거나 불필요한 조치에 과민 반응하지 않고 신속하게 문제를 해결할 수 있습니다.

마지막 생각들

테마 또는 플러그인의 보안을 개선하기 위해 무엇을 더 할 수 있습니까? 글쎄, 많은 것들. 보안 코드를 작성하는 것은 일회성이 아닙니다. 기술은 진화하고 공격 방법은 그에 따라 진화합니다.

현실은 모든 사이버 공격을 예방하거나 생각할 수 있는 모든 위험을 완화할 수 없다는 것입니다. 당신의 목표는 당신이 가지고 있는 것으로 가능한 한 많은 일을 하고 그것을 개선하기 위해 지속적으로 당신의 코드를 재검토하는 것이어야 합니다.

웹사이트에 대해 잘 정의된 보안 계획을 세우고 최악의 상황에 대비하세요. 보안 관련 티켓이나 보고서를 가장 높은 우선 순위로 가져가십시오.

모든 사용자가 업데이트하고 웹 사이트가 손상되는 것을 방지할 수 있도록 보안 수정 사항을 발표했다는 블로그 게시물이나 커뮤니티 내 공지를 게시하십시오.

사이버 보안은 군사 전략과 크게 다르지 않습니다. 열쇠는 준비입니다! 이 포스트가 준비에 도움이 되었기를 바랍니다. 귀하의 웹사이트 보안을 개선하기 위해 취하는 조치를 댓글로 알려주십시오.

이 문서에 사용된 참조 [ + ]

이 문서에 사용된 참조
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C