2017-04-24 89 views
0

我只是想在xss上運行,而且我希望警告框能夠在應該在echo上工作的echo上彈出。我正在根據概念進行練習,而且我對htmlspecialchars有一個錯誤的用法,這很容易受到xss的影響。然而,這不是真的有效,我不明白爲什麼。這是我的代碼爲什麼這個xss不能正常工作

$name=htmlspecialchars($_GET['myname']); 


echo "<HTML><body>";   
echo '<form action="">'; 
echo "name: <input type='text' name='myname' ><br>"; 

echo "<input type='submit' ></form>"; 

echo $name; // here I want the xss to execute a popup box 

echo "</HTML></body>"; 

輸入腳本如下所示。

<script>alert();</script> 

我也嘗試了很多選擇。該腳本顯示爲我鍵入它,並沒有警報框。

+3

問一下https://security.stackexchange.com/ –

+1

你應該在html之前關閉body標籤。也添加方法到您的表格 – Akintunde007

+3

@Akin不需要關閉HTML5中的一些標籤,如果沒有給出任何方法,則假定爲GET。 – DaveP

回答

3

我在做基於概念和hier的練習我有一個錯誤的htmlspecialchars的用法,它容易受到xss的影響。

雖然你不這樣做。您已經使用了htmlspecialchars,因爲它應該被使用,並因此在這裏受到XSS的保護。

+0

。 ENT_QUOTES未設置。正確的方法應該是htmlspecialchars($ string,ENT_QUOTES,'UTF-8'); – zeroday

+0

@zeroday'ENT_QUOTES'在這裏是不相關的(它只是簡單地影響'''和'''逃脫)''<' and '>'字符仍然被轉義,阻止了'

2

我的htmlspecialchars的錯誤使用,這很容易受到XSS

您的使用是沒有錯你的代碼的其餘部分,它是不容易受到XSS的代碼,你有。

使用htmlspecialchars只有一個參數使用默認設置,這使得<">,並&人物的安全。

當內容輸出到可以放置文本節點的地方時,這絕對沒問題。

主要情況是不夠的,以保護你的HTML是當你:

  • '勘定你的屬性值,而不是"
  • 把屬性值裏面的數據

那時候你需要ENT_QUOTES這樣'才能逃到。否則你可能會得到:

$user_input = "' onmouseover='alert(1)'"; 
?> 
<body data-userinput='<?php echo $user_input; ?>'> 

...所以可以添加觸發JS的新屬性。 (注意,如果您要將數據插入到JS或URL中,您還需要不同的衛生技術)。

+0

那麼怎麼能解釋這些注射工作https://security.stackexchange.com/questions/145716/xss-bypass-strtoupper-htmlspecialchars和這個視頻https://www.youtube.com/watch?v=EjiCSWKlsWI – zeroday

+1

@zeroday - 「那麼如何解釋這些注射工作?」 - 我解釋說,我剛剛給出的答案**中的一個**!它將值放在單引號分隔屬性中,就像我演示的一樣! (我不打算去看視頻,我沒有時間)。 – Quentin

相關問題