1 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
NameCheap 使用ModSecurity
,這是一個(gè) Web 應(yīng)用程序防火墻(或 WAF)。許多過濾器與防止跨站點(diǎn)腳本有關(guān)。(注意:他們的支持可以在帳戶級(jí)別禁用它,也可以為您將某些規(guī)則列入白名單,但您必須直接與他們聯(lián)系。他們還可以拉取日志來告訴您哪些過濾器正在被命中。)
base64 編碼版本實(shí)際上可能符合不同的規(guī)則,因?yàn)閻阂廛浖ǔJ褂盟鼇砘煜鋹阂獯a。另一種可能性是它是 POST 請(qǐng)求中腳本的壓力,因此您可以在使用 JavaScript 提交之前嘗試使用 base64 編碼(使用window.btoa(data)
),然后在 PHP 端使用base64_decode
.
您可以通過注釋掉所有代碼并查看403
在提交表單時(shí)是否仍然得到 a 來測(cè)試它是否處于 MySQL 級(jí)別。
如果它在 SQL 級(jí)別,您可以嘗試傳遞一個(gè)帶有一些不會(huì)出現(xiàn)在您的字符串中的已知分隔符的分塊字符串,然后在 SQL 中將其替換掉。例如,這樣的事情:
$insertscript = "INSERT INTO scriptcode (`postid`,`content`,`ttime`) VALUES('$getuniqueid',REPLACE('" . mysqli_real_escape_string($conn,chunk_split($_POST['scriptcode'],4,"?")) . "','?',""),'$gettime')";
在這個(gè)例子中,chunk_split
每 4 個(gè)位置插入一個(gè)特殊字符,然后 MySQLREPLACE
函數(shù)在查詢已經(jīng)發(fā)送到數(shù)據(jù)庫服務(wù)器后將它們剝離出來。
請(qǐng)記住,這非常笨拙且效率低下——我只是想提供一些不涉及支持的潛在解決方法。
- 1 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報(bào)