php偽造請求
㈠ phpcms v9 網站失效鏈接、壞鏈如何清除 flash crossdomain.xml 跨站請求偽造怎麼修復
樓主你好
crossdomain.xml 是系統的一個跨域配置文件,位於PC系統的根目錄,所以將它的第三行代碼改為:
<allow-access-fromdomain="zacseo.cn"/>
其中「zacseo.cn」為你的網站域名。
第二個問題,不知道你網站的鏈接是動態的還是靜態的還是偽靜態的,不論是哪一種,如果你的網站需要做正規SEO優化,都需要去網路站長平台提交你網站的死鏈接,這里的死鏈接可以通過網路站長平台的工具或者site命令看到,不過也不全,最好結合網站日誌查看死鏈接。
另外,如果你的網站是純靜態的,做完以上步驟後生成全站即可,有PC後台有生成欄目頁,生成內容頁,生成首頁等功能可以使用,如果是動態或者是偽靜態,只需要批量更新URL就可以了。
林羽凡
㈡ php爬蟲程序中怎麼樣偽造ip地址防止被封
1、國內ADSL是王道,多申請些線路,分布在多個不同的電信區局,能跨省跨市更好,自己寫好斷線重撥組件,自己寫動態IP追蹤服務,遠程硬體重置(主要針對ADSL貓,防止其宕機),其餘的任務分配,數據回收~
2、1.IP必須需要,,ADSL。如果有條件,其實可以跟機房多申請外網IP。
2.在有外網IP的機器上,部署代理伺服器。
3.你的程序,使用輪訓替換代理伺服器來訪問想要採集的網站。
3、ADSL + 腳本,監測是否被封,然後不斷切換 ip
設置查詢頻率限制
正統的做法是調用該網站提供的服務介面。
4、
1 user agent 偽裝和輪換
2 使用代理 ip 和輪換
3 cookies 的處理,有的網站對登陸用戶政策寬鬆些
友情提示:考慮爬蟲給人家網站帶來的負擔,be a responsible crawler
5、
盡可能的模擬用戶行為:
1、UserAgent經常換一換;
2、訪問時間間隔設長一點,訪問時間設置為隨機數;
3、訪問頁面的順序也可以隨機著來
6、
1. 對爬蟲抓取進行壓力控制;
2. 可以考慮使用代理的方式訪問目標站點。
-降低抓取頻率,時間設置長一些,訪問時間採用隨機數
-頻繁切換UserAgent(模擬瀏覽器訪問)
-多頁面數據,隨機訪問然後抓取數據
-更換用戶IP
㈢ php 怎偽造http referer怎用
建議讀這幾篇
http://blog.csdn.net/mayongzhan/archive/2008/01/24/2062890.aspx
http://blog.csdn.net/mayongzhan/archive/2008/04/28/2340408.aspx
http://blog.csdn.net/mayongzhan/archive/2008/01/24/2062895.aspx
下面是opt的參數對照的中文說明:
ps:php文檔里的這段是英文,簡直了.晦澀難懂!!!!!!
bool curl_setopt (int ch, string option, mixed value)
curl_setopt()函數將為一個CURL會話設置選項。option參數是你想要的設置,value是這個選項給定的值。下列選項的值將被作為長整形使用(在option參數中指定):
*CURLOPT_INFILESIZE: 當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。
*CURLOPT_VERBOSE: 如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。
*CURLOPT_HEADER: 如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。
*CURLOPT_NOPROGRESS: 如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。
*CURLOPT_NOBODY: 如果你不想在輸出中包含body部分,設置這個選項為一個非零值。
*CURLOPT_FAILONERROR: 如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。
*CURLOPT_UPLOAD: 如果你想讓PHP為上傳做准備,設置這個選項為一個非零值。
*CURLOPT_POST: 如果你想PHP去做一個正規的HTTP POST,設置這個選項為一個非零值。這個POST是普通的 application/x-www-from-urlencoded 類型,多數被HTML表單使用。
*CURLOPT_ftpLISTONLY: 設置這個選項為非零值,PHP將列出FTP的目錄名列表。
*CURLOPT_FTPAPPEND: 設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。
*CURLOPT_NETRC: 設置這個選項為一個非零值,PHP將在你的 ~./netrc 文件中查找你要建立連接的遠程站點的用戶名及密碼。
*CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
*CURLOPT_PUT: 設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項. *CURLOPT_MUTE: 設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。
*CURLOPT_TIMEOUT: 設置一個長整形數,作為最大延續多少秒。
*CURLOPT_LOW_SPEED_LIMIT: 設置一個長整形數,控制傳送多少位元組。
*CURLOPT_LOW_SPEED_TIME: 設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。
*CURLOPT_RESUME_FROM: 傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。
*CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。
*CURLOPT_TIMECONDITION: 傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。這僅用於HTTP。
*CURLOPT_TIMEVALUE: 傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。下列選項的值將被作為字元串:
*CURLOPT_URL: 這是你想用PHP取回的URL地址。你也可以在用curl_init()函數初始化時設置這個選項。
*CURLOPT_USERPWD: 傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。
*CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password] 格式的字元串去連接HTTP代理。
*CURLOPT_RANGE: 傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。
*CURLOPT_POSTFIELDS: 傳遞一個作為HTTP 「POST」操作的所有數據的字元串。
*CURLOPT_REFERER: 在HTTP請求中包含一個」referer」頭的字元串。
*CURLOPT_USERAGENT: 在HTTP請求中包含一個」user-agent」頭的字元串。
*CURLOPT_FTPPORT: 傳遞一個包含被ftp 「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-』(使用系統默認IP地址)。
*CURLOPT_COOKIE: 傳遞一個包含HTTP cookie的頭連接。
*CURLOPT_SSLCERT: 傳遞一個包含PEM格式證書的字元串。
*CURLOPT_SSLCERTPASSWD: 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。
*CURLOPT_COOKIEFILE: 傳遞一個包含cookie數據的文件的名字的字元串。這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。
*CURLOPT_CUSTOMREQUEST: 當進行HTTP請求時,傳遞一個字元被GET或HEAD使用。為進行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在確認你的伺服器支持命令先不要去這樣做。下列的選項要求一個文件描述(通過使用fopen()函數獲得):
*CURLOPT_FILE: 這個文件將是你放置傳送的輸出文件,默認是STDOUT.
*CURLOPT_INFILE: 這個文件是你傳送過來的輸入文件。
*CURLOPT_WRITEHEADER: 這個文件寫有你輸出的頭部分。
*CURLOPT_STDERR: 這個文件寫有錯誤而不是stderr。用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了:)
㈣ 如何向PHP偽造自己的ip
要看具體代碼是怎麼寫的,如果代碼寫得不好是有可能偽造的。
獲取IP的方法有幾種,通過例子看一下,這個是ThinkPHP里的獲取IP的函數:
/**
* 獲取客戶端IP地址
* @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數字
* @param boolean $adv 是否進行高級模式獲取(有可能被偽裝)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法驗證
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}
$_SERVER['HTTP_CLIENT_IP'] 是HTTP信息中的IP,存在於http請求的header中,可以偽造;
$_SERVER["REMOTE_ADDR"] 可取得客戶端的 IP 地址,但如果客戶端是使用代理伺服器來訪問,那取到的就是代理伺服器的 IP 地址,而不是真正的客戶端 IP 地址。不可以偽造,但可以用代理。
$_SERVER["HTTP_X_FORWARDED_FOR"] 可以透過代理伺服器取得客戶端的真實 IP 地址,但有時候也不管用,也可以偽造。
㈤ php 偽造或隱藏 http referer
三樓,人家明顯問的是黑b網站的事情,不是什麼負載均衡。
因為發給b網站的請求如果是從客戶端瀏覽器發起的,那麼refer是用戶機器上發起的,瀏覽器會自動根據當前頁設置refer。所以你要是想偽造,就只能做proxy,或者欺騙瀏覽器讓他認為當前網站域名就是b網站。
proxy的方式,a網站作為代理,要同時承擔這部分欺騙引起的流量,如果你是想黑別人,那麼會得不償失。
欺騙瀏覽器方案,這種可以考慮用js來實現,不過具體方法就不告訴你了。
那也是一個意思,就只有我說的這兩種方法。
㈥ 如何實現php的安全最大化怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞
使用php安全模式
伺服器要做好管理,賬號許可權是否合理。
假定所有用戶的輸入都是「惡意」的,防止XSS攻擊,譬如:對用戶的輸入輸出做好必要的過濾
防止CSRF,表單設置隱藏域,post一個隨機字元串到後台,可以有效防止跨站請求偽造。
文件上傳,檢查是否做好效驗,要注意上傳文件存儲目錄許可權。
防禦SQL注入。
避免SQL注入漏洞
1.使用預編譯語句
2.使用安全的存儲過程
3.檢查輸入數據的數據類型
4.從資料庫自身的角度考慮,應該使用最小許可權原則,不可使用root或dbowner的身份連接資料庫。若多個應用使用同一個資料庫,也應該為資料庫分配不同的賬戶。web應用使用的資料庫賬戶,不應該有創建自定義函數,操作本地文件的許可權。
避免XSS跨站腳本攻擊
1.假定所有用戶輸入都是「邪惡」的
2.考慮周全的正則表達式
3.為cookie設置HttpOnly,防止cookie劫持
4.外部js不一定可靠
5.出去不必要的HTML注釋
6. 針對非法的HTML代碼包括單雙引號等,使用htmlspecialchars()函數。
㈦ PHP如何判斷一個請求是否來源於本域並且是ajax請求
通過請求頭的Referer屬性可以獲取來源,X-Requested-With屬性(不代表ajax一定需要這個請求頭屬性)可以判斷是否是ajax。但是請求頭這種東西,也知道的,很容易偽造。如果僅僅是做業務上的判斷,請求頭就夠了。
㈧ 在PHP中如何偽造http頭進行模擬登陸
用php模擬登陸主要分為三部分 1. post數據。 2.根據返回的http頭,從中截出cookie段。 3.偽造http頭發送請求。 我這里以用php抓取163相冊的需要密碼才能訪問的目錄為例。 <?php function posttohost($url, $data) //post數據 { $url = parse_url($url); if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } $encoded = ""; foreach ($data as $k=>$v) { $encoded .= ($encoded ? "&" : ""); $encoded .= rawurlencode($k)."=".rawurlencode($v); } $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "Failed to open socket to $url[host]"; fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $url[host]\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); fputs($fp, "Content-length: " . strlen($encoded) . "\n"); fputs($fp, "Connection: close\n\n"); fputs($fp, "$encoded\n"); $line = fgets($fp,1024); if (!eregi("^HTTP/1\.. 200", $line)) return; $results = ""; $inheader = 1; while(!feof($fp)) { $line = fgets($fp,1024); if ($inheader && ($line == "\n" || $line == "\r\n")) { $inheader = 0; } elseif ($inheader) { $results .= $line; } } fclose($fp); return $results; }
㈨ php模擬http請求並無條件結束請求,可以是get方式的http請求,但是我想在請求1秒後結束請
$ch=curl_init("http://www.domain.com/api/index.php?test=1");
curl_setopt($ch,CURLOPT_TIMEOUT,1);//超時設置,秒級毫秒級CURLOPT_TIMEOUT_MS
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//獲取數據返回
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);//在啟用CURLOPT_RETURNTRANSFER時候將獲取數據返回
echo$output=curl_exec($ch);
㈩ PHP-ThinkPHP中的表單令牌是什麼原理
你說的是token吧
有效防止重復提交,以及跨站偽造請求
Token,就是令牌,最大的特點就是隨機性,不可預測。一般黑客或軟體無法猜測出來。
Token一般用在兩個地方——防止表單重復提交、anti csrf攻擊(跨站點請求偽造)。
原理上都是通過session token來實現的。當客戶端請求頁面時,伺服器會生成一個隨機數Token,並且將Token放置到session當中,然後將Token發給客戶端(一般通過構造hidden表單)。下次客戶端提交請求時,Token會隨著表單一起提交到伺服器端。
然後,如果應用於「anti csrf攻擊」,則伺服器端會對Token值進行驗證,判斷是否和session中的Token值相等,若相等,則可以證明請求有效,不是偽造的。
純手打,望採納