- 1、PHP面試題如何防止伺服器資源被其他網站盜用,並寫出相關代碼?
- 2、用php寫的網站可以用什麼工具來檢查它是否被掛馬被植入後門了???
- 3、PHP里如何讓自己網頁的內容防止被複制的代碼?
- 4、自己寫的php代碼,怎樣保證網站的安全性?
- 5、如何防止代碼注入攻擊在PHP
- 6、PHP網站怎麼sql注入?有沒有破解防禦的方法?
得看是什麼資源了
1,如果是媒體(圖片,聲音,視頻),則是使用Rewrite的重定向,要實現這個東西很簡單,貌似你問問度娘《圖片防盜鏈》就有你看不完的答案了。
2,如果是重要的文件(如配置文件或其它的),那就一定要用 .htaccess文件了。
在 .htaccess文件中寫入以下代碼:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
只可讓本機訪問,其它全部拒絕,保存。放到你要設防的目錄下。之後,你那目錄就安全了
清馬
1、找掛馬的標籤,比如有script language=”javascript” src=”網馬地址”/script或iframe width=420 height=330 frameborder=0
scrolling=auto src=網馬地址/iframe,或者是你用360或病殺毒軟體攔截了網馬網址。SQL資料庫被掛馬,一般是JS掛馬。
2、找到了惡意代碼後,接下來就是清馬,如果是網頁被掛馬,可以用手動清,也可以用批量清,網頁清馬比較簡單,這裡就不詳細講,現在著重講一下SQL資料庫清馬,用這一句語句「update 表名 set 欄位名=replace(欄位名,’aaa’,”)」, 解釋一下這一句子的意思:把欄位名里的內容包含aaa的替換成空,這樣子就可以一個表一個表的批量刪除網馬。
在你的網站程序或資料庫沒有備份情況下,可以實行以上兩步驟進行清馬,如果你的網站程序有備份的話,直接覆蓋原來的文件即可。
修補漏洞(修補網站漏洞也就是做一下網站安全。)
1、修改網站後台的用戶名和密碼及後台的默認路徑。
2、更改資料庫名,如果是ACCESS資料庫,那文件的擴展名最好不要用mdb,改成ASP的,文件名也可以多幾個特殊符號。
3、接著檢查一下網站有沒有注入漏洞或跨站漏洞,如果有的話就相當打上防注入或防跨站補丁。
4、檢查一下網站的上傳文件,常見了有欺騙上傳漏洞,就對相應的代碼進行過濾。
5、儘可能不要暴露網站的後台地址,以免被社會工程學猜解出管理用戶和密碼。
6、寫入一些防掛馬代碼,讓框架代碼等掛馬無效。
7、禁用FSO許可權也是一種比較絕的方法。
8、修改網站部分文件夾的讀寫許可權。
9、如果你是自己的伺服器,那就不僅要對你的網站程序做一下安全了,而且要對你的伺服器做一下安全也是很有必要了!
1、在不想被複制內容的php頁面中添加引用script src=”../nocopy.js” type=”text/javascript”/script
2、同時在網站文件夾中放入nocopy.js文件,當前../nocopy.js表示nocopy.js文件在根文件夾中
3、nocopy.js中的文件內容是:
var omitformtags=[“input”, “textarea”, “select”]
omitformtags=omitformtags.join(“|”)
function disableselect(e){
if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1)
return false
}
function reEnable(){
return true
}
if (typeof document.onselectstart!=”undefined”)
document.onselectstart=new Function (“return false”)
else{
document.onmousedown=disableselect
document.onmouseup=reEnable
}
那你就需要盡量多考慮一點了
一個是參數,要防止sql注入,這個是必須的
一個是驗證碼,防止機器人刷爆你的伺服器
如果自己寫,不要寫太複雜,這樣漏洞相對比較少
我也是自己寫的,不過不建議啊,比較麻煩,花時間
而且還沒有開源的功能多
希望能幫助到你
一,HTML防注入。
一般的html注入都是在字元串中加入了html標籤,用下JAVA代碼可以去掉這部分代碼。
代碼如下,自己封裝成方法即可。
String msge = “asdasdasdasd div id=\”f\”asdfsdf”;
System.out.println(msge);
msge = msge.replace(“”, “”);
msge = msge.replace(“”, “”);
msge = msge.replace(” “, ” “);
msge = msge.replace(“”, “”);
msge = msge.replace(“\””, “””);
msge = msge.replace(“‘”, “qpos;”);
System.out.println(msge);
二、防SQL注入
最簡單最容易的是限制用戶輸入。
簡單點的就是不允許用戶輸入單引號 和 –,因為單引號號–在SQL中都是影響執行的。
但SQL注入是多方面的,防止的方法也有很多種。
1、地址欄禁止特殊字元防SQL注入
把特殊字元(如and、or、’、”)都禁止提交就可以防止注入了。
2、php過濾html字元串,防止SQL注入
批量過濾post,get敏感數據
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
數據過濾函數
function stripslashes_array($array) {
while(list($key,$var) = each($array)) {
if ($key != ‘argc’ $key != ‘argv’ (strtoupper($key) != $key || ”.intval($key) == “$key”)) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var)) {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
3、替換HTML尾標籤
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( ‘/’, “”, $str);
$str = str_replace(“\\”, “”, $str);
$str = str_replace(“”, “”, $str);
$str = str_replace(“”, “”, $str);
$str = str_replace(“SCRIPT”, “”, $str);
$str = str_replace(“/SCRIPT”, “”, $str);
$str = str_replace(“script”, “”, $str);
$str = str_replace(“/script”, “”, $str);
$str=str_replace(“select”,”select”,$str);
$str=str_replace(“join”,”join”,$str);
$str=str_replace(“union”,”union”,$str);
$str=str_replace(“where”,”where”,$str);
$str=str_replace(“insert”,”insert”,$str);
$str=str_replace(“delete”,”delete”,$str);
$str=str_replace(“update”,”update”,$str);
$str=str_replace(“like”,”like”,$str);
$str=str_replace(“drop”,”drop”,$str);
$str=str_replace(“create”,”create”,$str);
$str=str_replace(“modify”,”modify”,$str);
$str=str_replace(“rename”,”rename”,$str);
$str=str_replace(“alter”,”alter”,$str);
$str=str_replace(“cas”,”cast”,$str);
$str=str_replace(“”,””,$str);
$str=str_replace(“”,””,$str);
$str=str_replace(“”,””,$str);
$str=str_replace(” “,chr(32),$str);
$str=str_replace(” “,chr(9),$str);
$str=str_replace(” “,chr(9),$str);
$str=str_replace(“”,chr(34),$str);
$str=str_replace(“‘”,chr(39),$str);
$str=str_replace(“br /”,chr(13),$str);
$str=str_replace(“””,”‘”,$str);
$str=str_replace(“css”,”‘”,$str);
$str=str_replace(“CSS”,”‘”,$str);
return $str;
}
三、專業的事情交給專業的工具去做。
安裝安全軟體。例如,在伺服器中安裝「伺服器安全狗」,可以設置防注入,防攻擊的設置,只要設置好安全規則,就可以屏蔽大多數攻擊入侵。
網站的運行安全肯定是每個站長必須考慮的問題,大家知道,大多數黑客攻擊網站都是採用sql注入,這就是我們常說的為什麼最原始的靜態的網站反而是最安全的。 今天我們講講PHP注入的安全規範,防止自己的網站被sql注入。
如今主流的網站開發語言還是php,那我們就從php網站如何防止sql注入開始說起:
Php注入的安全防範通過上面的過程,我們可以了解到php注入的原理和手法,當然我們也同樣可以制定出相應該的防範方法:
首先是對伺服器的安全設置,這裡主要是php+mysql的安全設置和linux主機的安全設置。對php+mysql注射的防範,首先將magic_quotes_gpc設置為On,display_errors設置為Off,如果id型,我們利用intval()將其轉換成整數類型,如代碼:
$id=intval($id);
mysql_query=」select *from example where articieid=』$id』」;或者這樣寫:mysql_query(」SELECT * FROM article WHERE articleid=」.intval($id).」”)
如果是字元型就用addslashes()過濾一下,然後再過濾」%」和」_」如:
$search=addslashes($search);
$search=str_replace(「_」,」\_」,$search);
$search=str_replace(「%」,」\%」,$search);
當然也可以加php通用防注入代碼:
/*************************
PHP通用防注入安全代碼
說明:
判斷傳遞的變數中是否含有非法字元
如$_POST、$_GET
功能:
防注入
**************************/
//要過濾的非法字元
$ArrFiltrate=array(」『」,」;」,」union」);
//出錯後要跳轉的url,不填則默認前一頁
$StrGoUrl=」”;
//是否存在數組中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=$value){
if (eregi($value,$StrFiltrate)){
return true;
}
}
return false;
}
//合併$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=$value){
$ArrPostAndGet[]=$value;
}
}
//驗證開始
foreach($ArrPostAndGet as $key=$value){
if (FunStringExist($value,$ArrFiltrate)){
echo 「alert(/」Neeao提示,非法字元/」);」;
if (empty($StrGoUrl)){
echo 「history.go(-1);」;
}else{
echo 「window.location=/」”.$StrGoUrl.」/」;」;
}
exit;
}
}
?
/*************************
保存為checkpostandget.php
然後在每個php文件前加include(「checkpostandget.php「);即可
**************************/
另外將管理員用戶名和密碼都採取md5加密,這樣就能有效地防止了php的注入。
還有伺服器和mysql也要加強一些安全防範。
對於linux伺服器的安全設置:
加密口令,使用「/usr/sbin/authconfig」工具打開密碼的shadow功能,對password進行加密。
禁止訪問重要文件,進入linux命令界面,在提示符下輸入:
#chmod 600 /etc/inetd.conf //改變文件屬性為600
#chattr +I /etc/inetd.conf //保證文件屬主為root
#chattr –I /etc/inetd.conf // 對該文件的改變做限制
禁止任何用戶通過su命令改變為root用戶
在su配置文件即/etc/pam.d/目錄下的開頭添加下面兩行:
Auth sufficient /lib/security/pam_rootok.so debug
Auth required /lib/security/pam_whell.so group=wheel
刪除所有的特殊帳戶
#userdel lp等等 刪除用戶
#groupdel lp等等 刪除組
禁止不使用的suid/sgid程序
#find / -type f \(-perm -04000 – o –perm -02000 \) \-execls –lg {} \;
原創文章,作者:FCOXL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126583.html