Apache:某個字串使 POST 請求掛起

Apache:某個字串使 POST 請求掛起

這是我遇到的問題的最小工作示例。我現在知道該錯誤似乎是我的伺服器/設定所特有的,但我仍然對發生的事情感到好奇。有兩個文件,m1.php 和 m2.php:

m1.php

<form action="m2.php" method="post">
<br> <input type="text" name="j" />
<input type="submit"  VALUE="Ok"  />
</form>

m2.php

<?php  
print_r($_POST);
?>

一切都按預期工作(當您單擊“確定”時,它會使用輸入框中的值打印數組),但有一個例外:如果我輸入的字串是

VALUE';WAITFOR DELAY '00:00:24';--

該表格未被處理。從上述字串中僅刪除一個字元是沒有問題的。

檢查伺服器日誌,當輸入上述字串時,日誌上不會出現 POST 請求,而我能想到的任何其他字串都會出現這種情況。問題似乎是伺服器端的,因為 Fiddler 顯示了包含內容的 POST 請求

j=VALUE%27%3BWAITFOR+DELAY+%2700%3A00%3A24%27%3B--

我可以在不同平台的不同瀏覽器中重現它。這是阿帕契的問題嗎?也許是php?我怎麼知道呢?

我在網站上進行安全審核時發現了這一點。沒有 SQL Server 運行,但審核報告了該問題。我很好奇為什麼那個特定的字串會觸發這種行為。

編輯:如果有人有興趣,我只是注意到上面描述的行為根本不依賴 php 程式碼。事實上,如果我透過 Fiddler 向伺服器上不存在的頁面發送 POST 請求,只要貼文內容包含帶有上述字串的某些字段,該請求就不會得到答复。所以看來這是 Apache 問題。

相關內容