DedeCMS經(jīng)常使用表單來(lái)接收或收集用戶提交的訂單或信息,如果有人惡意攻擊網(wǎng)站或者用掃描的方法,由于程序本身對(duì)某些字符進(jìn)行過(guò)濾,如果你的表單提交過(guò)來(lái)的數(shù)據(jù)全部顯示:88952634,就證明收到惡意攻擊!
應(yīng)對(duì)這樣的攻擊除了自身服務(wù)器的防護(hù)外,還可以在DedeCMS本身的diy表單里限制用戶同一時(shí)間提交表單信息。網(wǎng)上找到這樣的應(yīng)對(duì)方法:
找到/plus/diy.php,找到
if(!is_array($diyform)) { showmsg('自定義表單不存在', '-1'); exit(); }
下面添加代碼:
//檢測(cè)游客是否已經(jīng)提交過(guò)表單 //www.vi586.com if(isset($_COOKIE['VOTE_MEMBER_IP'])) { if($_COOKIE['VOTE_MEMBER_IP'] == $_SERVER['REMOTE_ADDR']) { ShowMsg('您已經(jīng)填寫(xiě)過(guò)表單啦','-1'); exit(); } else { setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/'); } } else { setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/'); }
但是這是針對(duì)用戶本身,也就是運(yùn)用了瀏覽器的cookie,但是程序掃描的應(yīng)該會(huì)失效,Safe3WVS掃描器在掃描sql注入漏洞時(shí),post字段內(nèi)就含有88952634這個(gè)數(shù)字,
這是利用限制IP達(dá)到重復(fù)多次提交的目的,用戶同一個(gè)IP只能一天內(nèi)只能提交三次,在上面的代碼替換成下面代碼:
//判斷ip,限制預(yù)約次數(shù) $intime = date('Y-m-d'); $row_ip = $dsql->getOne("SELECT count(*) as dd FROM `dede_xxxx` WHERE ip like '%{$ip}%' and date like '%{$intime}%'"); if($row_ip['dd'] >= 3) { echo "<script>alert('您今天的次數(shù)已經(jīng)到達(dá)上限,歡迎明天前來(lái)!'); window.location.href=''"; exit(); }