이 글에서는 주로 SQL 주입 공격과 XSS 공격을 방지하는 데 매우 유용한 PHP의 문자 보안 필터링 기능을 간략하게 소개합니다.
WEB 개발 과정에서 전 세계 사용자가 입력한 데이터를 얻어야 하는 경우가 종종 있습니다. 그러나 우리는 "사용자가 입력한 데이터를 결코 신뢰할 수 없습니다." 따라서 다양한 웹 개발 언어에는 사용자가 입력한 데이터의 보안을 보장하기 위한 기능이 제공됩니다. PHP에는 SQL 주입 공격, XSS 공격 등과 같은 문제를 방지하는 데 도움이 되는 매우 유용하고 편리한 기능이 있습니다.
1.mysql_real_escape_string()
이 함수는 한때 PHP에서 SQL 삽입 공격을 방지하는 데 큰 도움이 되었습니다. 작은따옴표나 큰따옴표와 같은 특수 문자에 "백슬래시"를 추가하여 사용자의 입력이 제대로 이루어지도록 합니다. 쿼리에 사용하기 전에 안전합니다. 하지만 데이터베이스에 연결되어 있는 동안 이 기능을 사용하고 있다는 점에 유의해야 합니다.
하지만 이제 mysql_real_escape_string() 함수는 기본적으로 더 이상 필요하지 않습니다. 모든 새로운 애플리케이션 개발에서는 PDO와 같은 라이브러리를 사용하여 데이터베이스를 운영해야 합니다. 즉, SQL 주입 공격을 방지하기 위해 이미 만들어진 명령문을 사용할 수 있습니다.
2.addlashes()
이 함수는 위의 mysql_real_escape_string()과 매우 유사하며 특수 문자에도 백슬래시를 추가하지만 php.ini 설정 파일의 Magic_quotes_gpc 값이 "on"인 경우에 주의하세요. ”, 이 기능을 사용하지 마십시오. Magic_quotes_gpc = on이면 모든 GET, POST 및 COOKIE 데이터에 대해 자동으로 addlashes()를 실행합니다. Magic_quotes_gpc에 의해 이스케이프된 문자열에는 addlashes()를 사용하지 마십시오. 이렇게 하면 이중 이스케이프가 발생하게 됩니다. 이 변수의 값은 PHP의 get_magic_quotes_gpc() 함수를 통해 확인할 수 있습니다.
3.htmlentities()
이 함수는 사용자 입력 데이터를 필터링하는 데 매우 유용합니다. 문자를 HTML 엔터티로 변환할 수 있습니다. 예를 들어, 사용자가 "<" 문자를 입력하면 이 함수에 의해 HTML 엔터티 "<"로 변환되므로(소스 코드를 볼 때 "<"가 표시됨) XSS 및 SQL 삽입이 방지됩니다. 인식할 수 없는 문자 집합은 무시되고 ISO-8859-1
4.htmlspecialchars()
이 함수는 위와 매우 유사합니다. 의미는 HTML 엔터티로 변환되어야 하며 이 함수는 변환된 문자열을 반환합니다.
5.strip_tags()
이 함수는 문자열에서 모든 HTML, JavaScript 및 PHP 태그를 제거할 수 있습니다. 물론 함수의 두 번째 매개변수를 설정하여 일부 특정 태그 필터링을 무시할 수도 있습니다.
6. intval()
intval은 실제로 필터링 함수가 아닙니다. 해당 기능은 변수를 정수 유형으로 변환하는 것입니다. 이는 정수 매개변수를 가져와야 할 때 매우 유용합니다. 특히 ID 및 나이와 같은 정수 데이터를 구문 분석할 때 PHP 코드를 더욱 안전하게 만들 수 있습니다.
이것은 PHP가 양식 제출에서 특수 문자를 처리하는 방법에 대한 요약입니다. 주로 htmlspecialchars/addslashes/stripslashes/strip_tags/mysql_real_escape_string과 같은 여러 기능을 결합하여 사용합니다.
1. 특수 문자 처리와 관련된 여러 PHP 함수
함수 이름 | Definition | 소개 |
htmlspecialchars | 앰퍼샌드, 작은따옴표 및 큰따옴표, 보다 큼 및 보다 작음 기호를 HTML 형식으로 변환 | 변환& "변환" '로 변환' <변환< >Convert> |
htmlentities() | 모든 문자는 HTML 형식으로 변환됩니다 | 위의 htmlspecialchars 문자 외에도 인코딩 등으로 표시되는 2바이트 문자도 포함됩니다. ㅋㅋㅋ NULL. |
stripslashes | 백슬래시 문자 제거 | 백슬래시 문자가 두 개 있으면 하나만 제거하고 백슬래시가 하나만 있으면 바로 제거하세요. |
.\ + * ? [ ^ ] ( $ ) 앞에 백슬래시 "" 기호를 추가하세요. | nl2br() | |
strip_tags | HTML 및 PHP 태그 제거 | 문자열 HTML 및 PHP 태그 사이의 내용을 포함하여 문자열의 모든 HTML 태그 및 PHP 태그를 제거하세요. 문자열 HTML 및 PHP 태그에 오류가 있으면 오류도 반환됩니다. |
mysql_real_escape_string | SQL 문자열의 특수 문자를 이스케이프합니다. | Escape x00 n r space' " x1a, 멀티바이트 문자 처리에 매우 효과적입니다. mysql_real_escape_string은 문자 집합을 결정하지만 mysql_escape_string은 고려할 필요가 없습니다. |
이것은 PHP에 내장된 문자열 필터링 기능으로, 매우 간단하고 실용적입니다. 친구들이 이 기능을 잘 활용할 수 있기를 바랍니다. 요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 관련 권장 사항: ffmpeg를 사용하여 PHP를 사용하여 비디오에 자막을 추가하는 방법 |