2016-11-19 1 views
0

양식을 test.phpform action ="<?php echo $_SERVER[PHP_self]"?>으로 만들면 해킹 당할 수 있습니다. 나는 그것이 htmlspecialchars()에 의해 확보 될 수 있다는 것을 이해합니다. 하지만 만약 내가 <form action ="test.php"> 대신에. 해킹 당하지 않습니다. 여기의 차이점은 무엇입니까?

url test.php/blah blah를 편집하면 소스 코드에서 양식 작업이되지만 form action="test.php" 일 때 발생하지 않습니다. 똑같은 것이 아닌가? test.php$_server['PHP_self']?

+1

"해킹 당할 수 있음"을 정의하십시오. –

+1

'action' 속성을 그냥 놔두고 양식을 현재 URL로 제출하도록 고려할 수도 있습니다. – Brad

답변

1

<form action ="test.php">을 HTML에 할당하면이 코드는 정적이며 서버 측에서 조작 할 수 없습니다. 세계가 안전을했다면

과 : 전역 $_SERVER['PHP_SELF']를 할당하면 그들과 같이이 코드를 조작하기 위해, 다음 페이지에서이 항목은 가능하게 주소 표시 줄에있는 사용자의 URL에 따라 동적 ... 살기 신뢰할 수있는 장소

브라우저 URL :는 R 지금http://www.test.com/html/form.php

<form action="/html/index.php" method="post"> 

평가 보증 등급 (EAL) 세계 ....

브라우저 URL :

:이은 (는) 다음과 같은 있도록 효과적으로 스크립트를 소독하라고 당신의 $_SERVER['PHP_SELF']htmlspecialchars() 내부 기능을 둘러싼 방지 할 수 있습니다 http://test.com/form.php/%22%3E%3Cscript%3Ealert('xss')%3C /script%3E%3Chack%22

<form action="/html/index.php/"><script>alert('xss')</script><hack"" method="post"> 

<form action="/html/index.php/&quot;&gt;&lt;script&gt;alert('xss')&lt;/script&gt;&lt;hack&quot;" method="post"> 
관련 문제