Computer >> 컴퓨터 >  >> 프로그램 작성 >> HTML

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

웹사이트에 대한 SQL 인젝션 공격이 걱정되십니까? 이 글을 읽고 있다면 이미 공격의 결과를 알고 있을 것입니다. 이번 포스트에서는 SQL 인젝션을 방지하는 쉬운 방법을 알아보겠습니다.

SQL 인젝션을 통해 해커는 WordPress 사이트를 가로채고 해당 사이트에 대한 액세스를 제어할 수 있습니다. 거기에서 트래픽을 리디렉션하고, 기밀 데이터를 훔치고, 스팸 링크를 삽입하고, 일본어 문자로 검색 결과를 조작하고, 불법 제품에 대한 광고를 표시할 수 있습니다. 이러한 공격은 사이트와 비즈니스에 돌이킬 수 없는 피해를 줄 수 있습니다.

다행히도 올바른 보안 조치를 취하면 SQL 주입을 예방할 수 있습니다. 이 가이드에서는 SQL 인젝션을 다루고 이를 방지하고 WordPress 웹사이트를 보호하기 위한 효과적인 조치에 대해 자세히 설명합니다.

틀;DR: 신뢰할 수 있는 보안 플러그인을 사용하여 WordPress 사이트에서 SQL 주입을 방지할 수 있습니다. MalCare를 설치하면 플러그인이 자동으로 이러한 공격을 검사하고 사이트를 방어합니다.

SQL 주입 공격이란 무엇입니까?

모든 WordPress 사이트에는 일반적으로 방문자가 정보를 입력할 수 있는 입력 영역이 있습니다. 사이트 검색창, 문의 양식 또는 로그인 양식일 수 있습니다. .

연락처 양식에서 방문자는 이름, 전화번호 및 이메일과 같은 데이터를 입력하고 귀하의 사이트에 제출합니다.

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

이 데이터는 웹사이트의 MySQL 데이터베이스로 전송됩니다. 여기에서 처리 및 저장됩니다.

이제 이러한 입력 필드에는 데이터가 데이터베이스에 입력되기 전에 데이터가 확인되고 삭제되도록 적절한 구성이 필요합니다. 예를 들어 연락처 양식 취약점은 문자와 숫자만 받아들여야 한다는 것입니다. 이상적으로는 기호를 허용하지 않아야 합니다. 이제 사이트에서 이 양식을 통해 데이터를 수락하면 해커가 이를 이용하여 다음과 같은 악성 SQL 쿼리를 삽입할 수 있습니다.


txtUserId = getRequestString("UserId");

txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

스크립트가 데이터베이스에 저장되면 해커가 스크립트를 실행하여 웹사이트를 제어합니다. 그런 다음 SQL 주입을 악용하고 사이트에 침입하여 악의적인 활동을 수행할 수 있습니다. 고객을 속이고 방문자를 피싱 사이트로 리디렉션하는 등의 작업을 시작할 수 있습니다.

따라서 웹사이트가 이러한 입력 필드의 데이터를 삭제하지 않으면 SQL 주입 취약점이 있음을 의미합니다.

SQL 공격은 어떻게 작동합니까?

해커는 취약한 보안 조치 또는 침입하기 쉬운 취약점이 있는 웹사이트를 대상으로 합니다. 경험에 따르면 플러그인과 테마는 종종 취약점을 개발하고 해커는 이를 잘 알고 있습니다. 그들은 취약한 플러그인과 테마를 사용하여 사이트를 찾기 위해 끊임없이 인터넷을 배회합니다.

이를 설명하기 위해 예제 시나리오를 사용합니다. A씨가 'Contact Form' 플러그인을 사용하여 웹사이트의 연락처 페이지에 있는 양식에 전원을 공급하고 있다고 가정해 보겠습니다. 버전 2.4의 이 플러그인에서 SQL 주입 취약점이 발견되었고 개발자가 이를 수정하고 업데이트된 버전 2.4.1을 출시했다고 가정해 보겠습니다.

릴리스 시 개발자는 보안 결함을 대중에게 알리는 업데이트의 이유를 공개합니다. 이는 해커가 Contact Form 플러그인 버전 2.4에 보안 결함이 있음을 알고 있음을 의미합니다.

이제 Mr.X는 업데이트를 실행할 시간이 없기 때문에 몇 주 동안 업데이트 설치를 연기합니다. 여기서 문제가 발생합니다.

해커는 취약점을 발견하면 인터넷을 통해 크롤링하고 특정 버전의 플러그인/테마를 사용하는 웹사이트를 찾는 프로그램을 실행하거나 취약점 스캐너를 사용합니다.

이 경우 연락처 양식 2.4를 사용하여 웹사이트를 찾습니다. 사이트를 찾으면 정확한 웹 취약점을 알게 되어 해킹하기가 훨씬 쉬워집니다. 이 경우 SQL 주입 결함을 악용하여 사이트에 침입합니다.

SQL 삽입 유형

해커는 두 가지 유형의 SQL 주입을 사용합니다.

1. 클래식 SQL 주입 – 웹사이트를 방문하면 브라우저(예:Chrome 또는 Mozilla)가 콘텐츠를 표시하기 위해 웹사이트 서버에 HTTP 요청을 보냅니다. 웹 서버는 사이트의 데이터베이스에서 콘텐츠를 가져와 브라우저로 다시 보냅니다. 이것이 웹사이트의 프런트 엔드를 볼 수 있는 방법입니다.

이제 웹 사이트의 데이터베이스에는 고객 세부 정보, 결제 정보, 사용자 이름 및 비밀번호와 같은 기밀 데이터를 비롯한 모든 종류의 데이터가 포함됩니다. 데이터베이스는 프런트 엔드 데이터만 릴리스하도록 구성해야 합니다. 다른 모든 기밀 데이터는 보호되어야 합니다. 그러나 이러한 애플리케이션 보안 검사가 이루어지지 않으면 해커가 이를 악용합니다.

클래식 SQL 주입 공격에서 해커는 데이터베이스에 악의적인 요청을 보내고 데이터를 검색하여 브라우저로 보냅니다. 그러나 그들은 쿼리 문자열을 사용하여 웹사이트의 로그인 자격 증명과 같은 민감한 정보를 요청합니다. 이 정보를 보호하지 않으면 해커에게 전송됩니다. 이러한 방식으로 그들은 귀하의 로그인 세부 정보를 입수하고 귀하의 사이트에 침입할 수 있습니다. 공격자는 또한 동일하거나 유사한 데이터베이스 명령문을 고효율로 반복적으로 실행하는 방법으로 준비된 명령문을 사용할 수 있습니다.

2. 블라인드 SQL 주입 – 여기에서 해커는 웹사이트의 입력 필드를 통해 악성 스크립트를 삽입합니다. 일단 데이터베이스에 저장되면 이를 실행하여 사이트 콘텐츠를 변경하거나 전체 데이터베이스를 삭제하는 것과 같은 모든 종류의 피해를 줍니다. 이 경우 악성 스크립트를 사용하여 관리자 권한도 얻을 수 있습니다.

두 시나리오 모두 웹사이트와 비즈니스에 치명적인 영향을 미칠 수 있습니다. 다행히도 웹사이트에서 올바른 보안 및 입력 유효성 검사 조치를 취하면 이러한 공격을 방지할 수 있습니다.

SQL 주입 공격을 방지하기 위한 단계

SQL 주입 공격을 방지하려면 웹 사이트에 대한 보안 평가를 수행해야 합니다. 다음은 SQL 공격을 방지하기 위해 취할 수 있는 두 가지 유형의 조치입니다. 일부는 쉬운 조치이고 일부는 복잡하고 기술적인 조치입니다.

간단한 예방 조치

  1. 보안 플러그인 설치
  2. 신뢰할 수 있는 테마 및 플러그인만 사용
  3. 사이트에서 불법 복제 소프트웨어 삭제
  4. 비활성 테마 및 플러그인 삭제
  5. 웹사이트를 정기적으로 업데이트

기술적 예방 조치

  1. 기본 데이터베이스 이름 변경
  2. 필드 항목 및 데이터 제출 제어
  3. WordPress 웹사이트 강화

시작하겠습니다.

SQL 주입 공격에 대한 손쉬운 예방 조치

1. 보안 플러그인 설치

웹사이트 보안 플러그인을 활성화하는 것은 웹사이트를 보호하기 위해 취해야 하는 첫 번째 단계입니다. WordPress 보안 플러그인은 사이트를 모니터링하고 해커가 침입하는 것을 방지합니다.

선택할 수 있는 플러그인이 많지만 제공하는 플러그인에 따라 MalCare를 선택합니다. 플러그인은 웹 애플리케이션 방화벽을 자동으로 설치하여 공격으로부터 사이트를 보호합니다. 해킹 시도를 식별하고 차단합니다.

다음으로 플러그인의 보안 스캐너가 매일 귀하의 사이트를 철저히 검사합니다. 사이트에 의심스러운 행동이나 악의적인 활동이 있는 경우 즉시 알려드립니다. Google이 사이트를 블랙리스트에 올리거나 호스팅 제공업체에서 사이트를 일시중지하기 전에 MalCare를 사용하여 즉시 조치를 취하고 사이트를 수정할 수 있습니다.

2. 웹사이트를 정기적으로 업데이트하십시오.

앞서 SQL 주입 예제에서 언급했듯이 개발자는 소프트웨어에서 보안 결함을 발견하면 수정하고 보안 패치가 포함된 새 버전을 출시합니다. 사이트에서 결함을 제거하려면 새 버전으로 업데이트해야 합니다.

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

WordPress 핵심 설치, 테마 및 플러그인을 업데이트하는 데 일주일에 한 번 시간을 할애하는 것이 좋습니다.

그러나 보안 업데이트가 출시된 것을 확인하면 즉시 업데이트를 설치하십시오.

3. 신뢰할 수 있는 테마와 플러그인만 사용

WordPress는 웹 사이트를 구축하는 데 가장 인기 있는 플랫폼이며 부분적으로 쉽고 저렴하게 만드는 플러그인과 테마 때문입니다. 그러나 사용 가능한 수많은 테마와 플러그인 중에서 신중하게 선택해야 합니다. 활성 설치 수, 마지막 업데이트 날짜, 테스트 버전 등 플러그인의 세부 정보를 확인하세요.

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

WordPress 저장소에서 다운로드하는 것이 좋습니다. 다른 테마 및 플러그인의 경우 적절한 조사를 수행하여 신뢰할 수 있는지 확인해야 합니다. 일부 타사 테마 및 플러그인이 해커에 의해 악의적으로 제작될 수 있기 때문입니다. 또한 잘못 코딩되어 취약성에 노출될 수도 있습니다.

4. 사이트에서 불법 복제 소프트웨어 삭제

불법 복제되거나 무효화된 테마와 플러그인이 매력적입니다. 프리미엄 기능을 무료로 이용할 수 있습니다. 그러나 불행히도 이들은 일반적으로 사전 로드된 맬웨어와 함께 제공됩니다. 불법 복제 소프트웨어는 해커가 악성 코드를 배포할 수 있는 쉬운 방법입니다.

설치하면 멀웨어가 활성화되어 사이트를 감염시킵니다. 그러한 소프트웨어는 멀리하는 것이 가장 좋습니다.

5. 비활성 테마 및 플러그인 삭제

플러그인을 설치하고 몇 년 동안 완전히 잊어버리는 것이 일반적입니다. 그러나 이 습관은 사이트를 해커에게 노출시킬 수 있습니다. 사이트에 설치한 플러그인과 테마가 많을수록 취약점이 나타나고 해커가 이를 악용할 가능성이 높아집니다.

사용하는 플러그인과 테마만 유지하는 것이 좋습니다. 나머지를 삭제하고 사이트를 더 안전하게 만드십시오. 또한 기존 테마와 플러그인을 정기적으로 검사하십시오.

기술적 예방 조치

이러한 조치는 WordPress의 내부 작동에 대한 약간의 지식이 필요할 수 있습니다. 그러나 요즘에는 모든 것을 위한 플러그인이 있습니다. 따라서 이러한 조치를 구현하는 데 관련된 복잡성에 대해 걱정할 필요가 없습니다. 우리는 그것을 간단하게 만듭니다!

1. 기본 데이터베이스 테이블 이름 변경

WordPress 사이트는 파일과 데이터베이스로 구성됩니다. 데이터베이스에는 기본적으로 11개의 테이블이 있습니다. 각 테이블에는 다양한 데이터와 구성이 있습니다. 이 테이블의 이름은 접두사 'wp_'로 지정됩니다. 따라서 테이블 이름은 wp_options, wp_users, wp_meta가 될 수 있습니다. 드리프트를 얻습니다.

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

이 이름은 모든 WordPress 사이트에서 동일하며 해커는 이를 알고 있습니다. 해커는 어떤 테이블이 어떤 종류의 데이터를 저장하는지 알고 있습니다. 해커가 웹사이트에 악성 스크립트를 삽입하면 스크립트가 저장될 위치를 압니다. 간단한 방법으로 SQL 명령을 실행하여 악성 활동을 실행할 수 있습니다.

그러나 테이블 이름을 변경하면 해커가 스크립트가 있는 위치를 찾는 것을 막을 수 있습니다. 따라서 해킹이 데이터베이스 테이블에 SQL 코드를 삽입하려고 할 때 테이블 이름을 알아낼 수 없습니다.

Change Table Prefix 또는 Brozzme와 같은 플러그인을 사용하여 이 작업을 수행할 수 있습니다. 귀하의 사이트에 그 중 하나를 설치하고 단계를 따르기만 하면 됩니다.

wp-config 파일을 편집하여 수동으로 이 작업을 수행할 수도 있습니다. 주의 사항 - 여기서 약간의 실수는 데이터베이스 오류 및 사이트 오작동으로 이어질 수 있습니다. 계속하기 전에 백업하십시오.

  • 호스팅 계정> cPanel> 파일 관리자로 이동합니다.
  • 여기에서 public_html 폴더에 액세스하고 wp-config 파일을 마우스 오른쪽 버튼으로 클릭합니다.
  • 편집을 선택하고 다음 코드를 찾습니다.
    "$table_prefix ='wp_';"
  • 다음으로 대체합니다.
    "$table_prefix ='test_';"

원하는 접두사를 선택할 수 있습니다. 여기서 우리는 새로운 데이터베이스 이름으로 'test_'를 선택했습니다. 완료되면 해커는 SQL 명령을 찾을 수 없습니다.

2. 필드 입력 및 데이터 제출 제어

특정 유형의 데이터만 허용하도록 웹사이트의 모든 입력 필드를 구성할 수 있습니다. 예를 들어 이름 필드는 여기에 숫자를 입력해야 할 이유가 없기 때문에 영문자(문자)만 허용해야 합니다. 마찬가지로 연락처 번호 필드에는 숫자만 입력해야 합니다.

사용자 입력을 삭제하는 Sanitize_text_field() 함수를 사용할 수 있습니다. 이 입력 유효성 검사를 통해 정확하지 않거나 단순히 위험한 항목이 차단될 수 있습니다.

3. WordPress 웹사이트 강화

이것은 SQL 주입 공격으로부터 WordPress 사이트를 보호하기 위해 취할 수 있는 가장 중요한 단계 중 하나입니다. 웹사이트 강화란 무엇입니까?

워드프레스 웹사이트는 사이트 운영에 도움이 되는 많은 기능을 제공합니다. 그러나 대부분의 사람들은 이러한 기능을 많이 사용하지 않습니다. WordPress.org는 사용하지 않는 경우 일부를 비활성화하거나 제거하는 것이 좋습니다. 이렇게 하면 해커가 시도할 요소가 적기 때문에 공격의 가능성이 줄어듭니다!

일부 WordPress 강화 조치는 다음과 같습니다.

  1. 파일 편집기 비활성화
  2. 플러그인 또는 테마 설치 비활성화
  3. 2단계 인증 구현
  4. 로그인 시도 제한
  5. WordPress 보안 키 및 솔트 변경
  6. 알 수 없는 폴더에서 PHP 실행 차단

이러한 조치를 구현하려면 몇 번의 클릭만으로 이를 수행할 수 있는 MalCare와 같은 플러그인을 사용할 수 있습니다.

SQL 주입을 방지하는 방법은 무엇입니까? (전체 가이드)

Or you can implement it manually by following our Guide on WordPress Hardening.

That brings us to the end of preventing SQL injection attacks. If you’ve implemented the measures we’ve discussed in this SQL injection cheat sheet, your site will be safe

SQL injection attacks can be prevented! Use this guide to implement the right security measures on your WordPress site. Click to Tweet

Final Thoughts

Prevention really is better than cure. SQL injection attacks can cause unnecessary stress and severe financial burden.

Most of the measures we discussed today can be easily implemented with the use of plugins. So you needn’t be worried if you are not tech-savvy! You can still protect yourself!

Along with implementing these measures, we strongly suggest activating MalCare on your site. Its firewall will actively defend your website against attacks. It scans your site every day to check for hack attempts and malware on your site.

You can think of it as your website security guard that monitors your site and keeps the bad guys out. You can have peace of mind knowing your site is protected.

Prevent Hack Attacks With Our MalCare Security Plugin!