나는 html injection.i 방지하는 방법을 알고 도처에 검색이 website.But에 설득력있는 대답을 가지고이 website.but에 두 가지 질문을 넣어 가지고, 내가 만든 내 스크립트를 제공 오전 mysql을 방지하기위한, 내 HTML 양식에 HTML을 주입.도움을 HTML 주입 방지에 필요한
//sql injection prevention
$name =mysql_real_escape_string($_POST['name']);
$login = mysql_real_escape_string($_POST['login']);
$user = mysql_real_escape_string($_POST['user']);
//striping tags
$user =strip_tags($user);
$login = strip_tags($login);
$name =strip_tags($name);
이 후 난 내 데이터베이스에 아래의 스크립트를 사용하여 내 HTML에 이름, 로그인, 사용자 양식에 넣어 및 저장하여 내 스크립트가 얼마나 잘 작동하고 있는지 확인하기 위해 노력
<script>
document.location = "http://badurl";
</script>
하지만 위의 스크립트를 데이터베이스에 저장하고 페이지에 표시하기 위해 페이지를 표시하려고 시도했을 때 badurl site.i에갔습니다. strip_tags가 작동하지 않는 이유를 알고 싶습니다. 당신은 우리가 당신을 인쇄하기 전에 필드에 htmlspecialchars
를 사용해야합니다 (아래의 스크립트처럼) while 루프에서
while ($row = mysql_fetch_array($query)) {
echo('<big><big><big style="color: rgb(158, 0, 0);">' . $row['name'] . ' </big></big></big><p>');
echo('<big><div style="text-align: justify;">' . $row['login'] . ' </big> </div>');
echo('<div style="text-align: justify;">' . $row['user'] . ' </div>');
데이터를 데이터베이스에 저장하기 전에'strip_tags' 또는 mysql_real_escape_string을 제외한 다른 것을 호출 할 필요가 없습니다. 데이터를 잘못 작성하면 다시 되돌릴 수 없으므로 데이터를 파괴하지 마십시오. * HTML 웹 페이지 *에 표시하려면 * 아래의 Dogbert의 대답과 같이 'htmlspecialchars'를 사용할 수 있습니다. –
답장을 보내 주신 grossman에게 감사합니다. – test