第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

嘗試將字符串 `alert("boo")` 插入 MySQL 數(shù)據(jù)庫但產(chǎn)生 403 錯(cuò)誤 PHP

嘗試將字符串 `alert("boo")` 插入 MySQL 數(shù)據(jù)庫但產(chǎn)生 403 錯(cuò)誤 PHP

PHP
紅顏莎娜 2021-10-08 14:34:18
我正在嘗試將 javascript 源作為文本保存到 mysql 表。我使用 MEDIUM TEXT 作為數(shù)據(jù)庫中的數(shù)據(jù)類型。測(cè)試時(shí),我注意到如果文本包含alert();要保存到數(shù)據(jù)庫的 textarea 中的任何位置,我將無法成功保存文本。我了解 XSS 漏洞,并認(rèn)為這可能是服務(wù)器提供商的內(nèi)置預(yù)防措施,因此我什至嘗試將字符串保存為 base64 編碼。在嘗試保存源文本時(shí),我仍然收到 403 禁止錯(cuò)誤。關(guān)于 403 Forbidden 錯(cuò)誤的描述是: You don't have permission to access / on this server.$string1 = 'console.log("test");';//successfully saves when attempting to insert into database$string2 = 'alert("boo");';//error 403 Forbidden when attempting to insert into database$string3 = 'alert("boo");';$encstr = base64_encode($string3);//error 403 Forbidden when attempting to insert into database任何想法如何修復(fù)或規(guī)避?這是我正在使用的新服務(wù)提供商 (namecheap),在我的 digitalocean VPS 上運(yùn)行相同的代碼時(shí),我沒有收到此錯(cuò)誤。更新顯示來源:<?phprequire("conn.php");if(isset($_POST["savecode"])){    $getuniqueid = uniqid();    $gettime = time();    $getscriptcode = $_POST["scriptcode"];    $sanitizescriptcode = mysqli_real_escape_string($conn, $getscriptcode);    //$sanitizescriptcode = htmlspecialchars($sanitizescriptcode);    $sanitizescriptcode = base64_encode($sanitizescriptcode);    $insertscript = "INSERT INTO scriptcode (`postid`,`content`,`ttime`) VALUES('$getuniqueid','$sanitizescriptcode','$gettime')";    mysqli_query($conn, $insertscript)or die("Fatal error attempting to save JavaScript");    header("Location: ?id=".$getuniqueid);    exit();}?><!DOCTYPE html><html><body><div id="hbanner"><form method="post"><button type="submit" name="savecode" id="savecode" class="btn btn-info">SAVE</button></div><textarea id="scriptcode" name="scriptcode" class="codeinput"></textarea></form></body></html>
查看完整描述

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)記住,這非常笨拙且效率低下——我只是想提供一些不涉及支持的潛在解決方法。


查看完整回答
反對(duì) 回復(fù) 2021-10-08
  • 1 回答
  • 0 關(guān)注
  • 188 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)