편집 필드에 텍스트를 입력하여 웹 사이트를 중단해야합니다. Edit 필드는 PHP 코드와 JavaScript에서 뒤에 Varchar 값처럼 사용됩니다. 이 예에서 유효성 검사를 우회 할 수 있습니까?
이론상 오류를 일으킬 수있는 것.
이 답변 이 모든 위반 사항을 설명하는 것은 아닙니다 ! 가장 일반적인 두 가지만 설명합니다.
SQL 주입은 동작을 수정하기 위해 쿼리에 SQL을 주입하는 것입니다. 예 : ' OR 'a' = 'a
비밀번호를 입력하지 않도록 HTML 입력에 삽입 합니다.
이를 방지하려면 문자열을 이스케이프해야합니다.
SQL 쿼리는 문자열 일 뿐이므로 다음과 같이 할 수 있습니다.
<?php
$value = "blue";
$query = "select * from table where column = '" . mysqli_real_escape_string($value) . "'";
설명 : $ value 변수의 값이 $ query에 설정되어 있습니다. 그러나 더 이상 보안이 없으면 SQL 주입을 수행 할 수 있습니다. 그래서 mysqli_real_escape_string을 사용하고 있습니다. 그러나 만약 변수라면 값을 삽입하고 싶다면 준비된 문장을 선호해야합니다 .
PDO를 사용한 준비된 진술의 예 (문서에서) :
<?php
$dbh = new PDO('mysql:host=localhost;dbname=yourdbname;charset=utf8', 'yourUsername', 'yourPassword');
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = :name");
$stmt->execute(array('name' => $name));
$allResults = $stmt->fetchAll(PDO::FETCH_COLUMN);
사용할 상수를 확인하려면 PDOStatement :: fetchAll 을 참조하십시오 .
몇 가지 일반적인 공격으로부터 자신을 보호하기 위해 가장 일반적인 것을 관리하는 프레임 워크 (Ex Symfony , Yii 또는 기타)를 사용할 수 있습니다.
XSS는 대상 웹 사이트에서 일부 코드를 실행하는 기술입니다. 예 :
양식 (입력 또는 텍스트 영역)을 채우고 이름 대신 다음과 같이 자바 스크립트 코드를 입력합니다.
<script>
alert('xss');
</script>
XSS 공격이 작동하면 웹 사이트에서이 값을 표시하려고 할 때 브라우저에 팝업이 표시되어야합니다.
첫 번째 규칙은 사용자 입력을 신뢰하지 않음 입니다. 따라서 사용자가 양식에 무언가를 입력하거나 사용자로부터 오는 정보는 안전하지 않은 상태로 취급되어야합니다. 정보는 안전하지 않으므로 표시하기 전에 이스케이프해야합니다.
echo htmlspecialchars($value);
또한 자동 변수를 이스케이프 처리하는 Twig 또는 Smarty 와 같은 템플릿 엔진을 사용할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다