2016-03-07 41 views
0

爲什麼輸入文本在輸入字符串有<後跟一些沒有空格的文本時被截斷,例如: <abc。但是,如果在<之後有空格,它就可以正常工作。 < abc爲什麼輸入文本如果包含<符號後跟一些文本,則會被截斷

HTML

<form name="testform" method="post"> 
     <input type="text" name="title" /> 
     <input type="submit" value="Submit"/> 
</form> 

如果您提供的輸入值This is a sample <string並提交。通過POST收到的價值是This is a sample。但是,當您提交This is a sample < string(請注意<之後的空格),那麼它會被正確接收。

服務器端(PHP)

<?php 
if(isset($_POST['title'])) { 
     echo '<pre>'; 
     print_r($_POST); // outputs "This is a sample " instead of "This is a sample <string" 
} 
?> 

什麼是這個原因?

+0

它不會。問題在於你沒有與我們共享的服務器端代碼將它作爲HTML輸出,'<'在HTML中有特殊含義。 – Quentin

+0

http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php可能是一個重複的問題,但這個問題沒有涉及到指定涉及的服務器端語言。 – Quentin

+0

是的,[此問題]的副本(http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php)。 ' Quentin

回答

0

原因是<符號是一個特殊字符。據推測在你的文章中,你會剝離任何可能有害的東西,可能是htmlentities,你的驗證可能會將其視爲潛在的威脅,因此它會從字符串中刪除標籤。

相關問題