나는 분명히하기 위해 초보자입니다. XSS 공격을 막기 위해 데이터 이스케이프에 대해 많이 들었습니다. 실제로 어떻게합니까?PHP에서 출력을 이스케이프하는 방법
이 내가 현재하고있는 무슨이다 -
$s = mysqli_real_escape_string($connect,$_POST['name']));
이 충분한가요? 감사합니다.
나는 분명히하기 위해 초보자입니다. XSS 공격을 막기 위해 데이터 이스케이프에 대해 많이 들었습니다. 실제로 어떻게합니까?PHP에서 출력을 이스케이프하는 방법
이 내가 현재하고있는 무슨이다 -
$s = mysqli_real_escape_string($connect,$_POST['name']));
이 충분한가요? 감사합니다.
, 당신은 mysqli_real_escape_string()를 사용하여 문자열 탈출 숫자를 주조 (또는 준비된 문을 사용한다 둘 다) 및 화이트리스트 기반 필터링을 통해 식별자/운영자를 보호하십시오.
올바른 방법을 사용하면이 두 가지 방법 모두 필요합니다.
답을 편집하여 도움이됩니다. –
코드 공격 (즉, SQL 주입 공격)에 대해 코드를 수정하기 시작한 경우 매개 변수화 된 쿼리를 확인하는 것이 좋습니다. 기본적으로 이러한 작업은 명령 (sql)과 컨텐츠 (입력)를 분리하므로 이름처럼 사용자가 입력 한 악의적 인 정보로 혼동 될 수 없습니다. 당신은 여기 PDO
설명서를 읽고 시작할 수 있습니다 :
당신은 PDO
클래스를 사용하여 시작 시도 할 수 http://php.net/manual/en/book.pdo.php을이 페이지 좋은 예 있습니다 http://php.net/manual/en/pdo.prepared-statements.php
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
// insert one row
$name = 'one';
$value = 1;
$stmt->execute();
// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>
그러나, 당신은 사용할 필요가 없습니다를 이름이 별도의 값이기 때문에 PDO
, 당신은 내가, http://php.net/manual/en/mysqli.prepare.php
<?php
/* Script A -- We are already connected to the database */
$stmt = mysqli_prepare($link, "INSERT INTO table VALUES (?, ?, 100)"); /* Query 1 */
mysqli_stmt_bind_param($stmt, "si", $string, $integer);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt); // CLOSE $stmt
?>
를 참조 또한 mysqli
사용할 수 있습니다 절대 SQL 명령이 될 수 없으므로 자동으로 안전합니다.
어떻게하면됩니까? 어리석은 것에 대해 유감스럽게 생각합니다. – Chrism
예제와 몇 가지 링크가 추가되었습니다. – Nanne
이렇게하면 XSS 공격이 아닌 SQL 주입 공격을 방지 할 수 있습니다. – geoffspear
당신은을 mysqli_real_escape_string 출력보다는 htmlspecialchars를 사용해야합니다. 당신 출력 데이터는 반드시 htmlspecialchars() 다른 를 사용해야 HTML로 경우 데이터베이스에 데이터를 저장하는 경우
데이터로 무엇을하고 있는지 알려줄 필요가 있습니다. 그것을 데이터베이스에 삽입하고 있습니까? 또는 웹 사이트에서 출력 하시겠습니까? 데이터로 수행하는 모든 일에는 다른 형태의 위생이 필요합니다. –
@pekoe both .... 하나의 파일에서 나는 받아 들여서 삽입한다 ... 다른 하나는 출력한다. – Chrism
이제 $ s를 데이터베이스에 삽입 할 것을 고려하십시오. 충분히 안전합니까? – Chrism