SQL 주입 공격으로부터 웹 애플리케이션을 보호하기 위해 CentOS 시스템을 구성하는 방법
소개:
인터넷이 발전하면서 웹 애플리케이션의 사용이 점점 더 널리 보급되고 있지만 웹 애플리케이션의 보안 문제도 발생합니다. 그 중 SQL 주입 공격이 가장 일반적인 공격 방법이다. 웹 애플리케이션을 보호하려면 CentOS 시스템에서 일련의 구성과 최적화를 수행해야 합니다. 이 문서에서는 SQL 주입 공격으로부터 웹 애플리케이션을 보호하기 위해 CentOS 시스템을 구성하는 방법을 설명합니다.
웹 서버 설치 및 구성
먼저 웹 애플리케이션을 호스팅할 안정적인 웹 서버를 설치하고 구성해야 합니다. 여기서는 일반적으로 사용되는 Apache 서버를 예로 선택합니다. 다음은 CentOS에 Apache 서버를 설치하는 명령의 예입니다.
sudo yum install httpd
설치를 완료한 후 Apache에서 몇 가지 보안 구성을 수행해야 합니다. 먼저 공격자가 서버에서 중요한 정보를 얻는 것을 방지하기 위해 서버에서 디렉터리 검색을 비활성화합니다. 다음은 httpd.conf 파일을 수정하여 디렉토리 검색을 비활성화하는 예입니다.
sudo vi /etc/httpd/conf/httpd.conf
파일에서 다음 줄을 찾습니다.
Options Indexes FollowSymLinks
다음으로 변경합니다.
Options -Indexes FollowSymLinks
파일을 저장하고 종료합니다. 그런 다음 Apache 서버를 다시 시작하여 적용합니다.
sudo systemctl restart httpd
데이터베이스 서버 구성
웹 애플리케이션에서는 데이터를 저장하고 관리하기 위해 데이터베이스를 사용해야 하는 경우가 많습니다. 여기서는 데이터를 저장할 데이터베이스 서버로 MySQL을 선택합니다. 다음은 CentOS에 MySQL 서버를 설치하는 명령 예입니다.
sudo yum install mysql-server
설치를 완료한 후 MySQL에 대한 몇 가지 보안 구성을 수행해야 합니다. 먼저 원격 액세스를 비활성화하고 데이터베이스에 대한 로컬 액세스만 허용합니다. 다음은 my.cnf 파일을 수정하여 원격 액세스를 비활성화하는 예입니다.
sudo vi /etc/my.cnf
다음 줄을 찾습니다.
bind-address = 127.0.0.1
줄 앞에 주석 기호 "#"를 추가하여 주석 줄로 만듭니다.
#bind-address = 127.0.0.1
저장하고 종료합니다. 파일. 그런 다음 구성이 적용되도록 MySQL 서버를 다시 시작합니다.
sudo systemctl restart mysqld
매개변수화된 쿼리 문 사용: SQL 쿼리를 실행할 때 문자열을 연결하는 대신 매개변수화된 쿼리 문을 사용해야 합니다. 이렇게 하면 공격자가 악의적인 입력을 사용하여 추가 SQL 코드를 삽입하는 것을 방지할 수 있습니다. 다음은 매개변수화된 쿼리를 사용하는 예입니다.
import pymysql conn = pymysql.connect(host='localhost', user='username', password='password', database='dbname') cursor = conn.cursor() sql = "SELECT * FROM users WHERE username = %s" username = 'admin' cursor.execute(sql, (username,)) result = cursor.fetchall() for row in result: print(row) conn.close()
입력 필터링 및 유효성 검사: 사용자 입력을 받을 때 입력이 예상 형식 및 유형을 준수하는지 확인하기 위해 입력을 필터링하고 유효성을 검사해야 합니다. 다음은 입력 필터링 및 유효성 검사의 예입니다.
username = input("请输入用户名:") # 过滤非法字符 for char in username: if char not in ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'): username = username.replace(char, '') # 验证用户名长度 if len(username) > 20: username = username[:20] print("处理后的用户名为:", username)
결론:
위의 구성과 코드 최적화를 통해 SQL 주입 공격으로부터 웹 애플리케이션을 효과적으로 보호할 수 있습니다. 물론 이는 보호 조치의 일부일 뿐이며, 다른 보안 문제에도 주의를 기울이고 적시에 시스템을 업데이트하고 유지 관리해야 합니다. 다양한 보안 조치를 결합함으로써 웹 애플리케이션과 데이터의 보안을 보다 효과적으로 보호할 수 있습니다.
위 내용은 SQL 주입 공격으로부터 웹 애플리케이션을 보호하기 위해 CentOS 시스템을 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!