1. SQL 인젝션
SQL 인젝션은 웹사이트에 대한 가장 큰 위협 중 하나입니다. 다른 사람의 SQL 인젝션으로 인해 귀하의 데이터베이스가 공격을 받으면 다른 사람이 귀하의 데이터베이스에서 이동할 수 있으며, 아마도 더 많은 문제가 발생할 수 있습니다. 심각한 결과.
해결책:
주요 솔루션에는 두 가지가 있습니다. 사용자가 입력한 데이터를 피하거나 캡슐화된 명령문을 사용하십시오. 이스케이프 방법은 사용자가 제출한 데이터를 필터링하고 유해한 태그를 제거하는 기능을 캡슐화하는 것입니다. 하지만 이 방법은 어디서나 수행하는 것을 잊어버리기 쉽기 때문에 권장하지 않습니다.
이제 PDO를 사용하여 캡슐화된 명령문을 실행하는 방법을 소개하겠습니다(mysqi도 마찬가지입니다).
$username = $_GET['username']; $query = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $query->execute(['username' => $username]); $data = $query->fetch();
2, XSS
XSS는 크로스 사이트 스크립팅인 CSS(Cross Site Script)라고도 합니다. 공격. 악의적인 공격자가 웹 페이지에 악성 html 코드를 삽입하면 사용자가 해당 페이지를 탐색할 때 웹에 내장된 html 코드가 실행되어 사용자를 악의적으로 공격한다는 특수한 목적을 달성하게 됩니다.
해결책:
절대적으로 사용자의 입력을 신뢰하지 말고 입력에서 모든 특수 문자를 필터링하세요. 이렇게 하면 대부분의 XSS 공격이 제거됩니다.
<?php $searchQuery = htmlentities($searchQuery, ENT_QUOTES);
또는 템플릿 엔진 Twig를 사용할 수 있습니다. 일반 템플릿 엔진은 기본적으로 출력에 htmlentities 방지를 추가합니다.
3.
해결책:
가장 일반적인 방어 방법은 일반적으로 토큰이라고 하는 CSRF 토큰 암호화 보안 문자열을 생성하고 토큰을 쿠키 또는 세션에 저장하는 것입니다.
웹 페이지에서 양식을 구성할 때마다 양식의 숨겨진 필드에 토큰을 넣으세요. 양식 요청 서버는 이를 사용자의 쿠키 또는 세션에 있는 토큰과 비교하여 확인에 성공한 경우에만 전달합니다. . 공격자는 토큰의 내용을 알 수 없기 때문에(각 양식의 토큰은 무작위임) 사용자를 사칭할 수 없습니다. 추천 튜토리얼:PHP 비디오 튜토리얼
위 내용은 일반적인 PHP 보안 문제 및 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!