>백엔드 개발 >PHP 튜토리얼 >일반적인 PHP 보안 문제 및 솔루션

일반적인 PHP 보안 문제 및 솔루션

王林
王林원래의
2019-11-08 17:44:421983검색

일반적인 PHP 보안 문제 및 솔루션

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 수명주기다음 기사:PHP 수명주기