主頁 > 知識庫 > 6個常見的 PHP 安全性攻擊實例和阻止方法

6個常見的 PHP 安全性攻擊實例和阻止方法

熱門標(biāo)簽:ai電話機(jī)器人加盟代理 gps 地圖標(biāo)注軟件 400電話鄭州申請 電銷機(jī)器人便宜的有嗎 地圖標(biāo)注視頻廣告入駐 OMG地圖標(biāo)注app 中原區(qū)電話機(jī)器人價格 招標(biāo)自動語音外呼系統(tǒng) 黔江400電話如何辦理

了解常見的PHP應(yīng)用程序安全威脅,可以確保你的PHP應(yīng)用程序不受攻擊。因此,本文將列出 6個常見的 PHP 安全性攻擊,歡迎大家來閱讀和學(xué)習(xí)。

  1、SQL注入

  SQL注入是一種惡意攻擊,用戶利用在表單字段輸入SQL語句的方式來影響正常的SQL執(zhí)行。還有一種是通過system()或exec()命令注入的,它具有相同的SQL注入機(jī)制,但只針對shell命令。

$username = $_POST['username'];
$query = "select * from auth where username = '".$username."'";
echo $query;
$db = new mysqli('localhost', 'demo', ‘demo', ‘demodemo');
$result = $db->query($query);
if ($result  $result->num_rows) {
    echo "br />Logged in successfully";
} else {
    echo "br />Login failed";
}

上面的代碼,在第一行沒有過濾或轉(zhuǎn)義用戶輸入的值($_POST['username'])。因此查詢可能會失敗,甚至?xí)p壞數(shù)據(jù)庫,這要看$username是否包含變換你的SQL語句到別的東西上。

  防止SQL注入

  選項:

  使用mysql_real_escape_string()過濾數(shù)據(jù)

  手動檢查每一數(shù)據(jù)是否為正確的數(shù)據(jù)類型

  使用預(yù)處理語句并綁定變量

  使用準(zhǔn)備好的預(yù)處理語句

  分離數(shù)據(jù)和SQL邏輯

  預(yù)處理語句將自動過濾(如:轉(zhuǎn)義)

  把它作為一個編碼規(guī)范,可以幫助團(tuán)隊里的新人避免遇到以上問題。

$query = 'select name, district from city where countrycode=?';
if ($stmt = $db->prepare($query) )
{
    $countrycode = 'hk';
    $stmt->bind_param("s", $countrycode);
    $stmt->execute();
    $stmt->bind_result($name, $district);
    while ( $stmt ($stmt->fetch() ){
        echo $name.', '.$district;
        echo 'br />';
    }
    $stmt->close();
}

2、XSS攻擊

  XSS(跨站點腳本攻擊)是一種攻擊,由用戶輸入一些數(shù)據(jù)到你的網(wǎng)站,其中包括客戶端腳本(通常JavaScript)。如果你沒有過濾就輸出數(shù)據(jù)到另一個web頁面,這個腳本將被執(zhí)行。

  接收用戶提交的文本內(nèi)容

?php
if (file_exists('comments')) {
    $comments = get_saved_contents_from_file('comments');
} else {
    $comments = '';
}

if (isset($_POST['comment'])) {
    $comments .= 'br />' . $_POST['comment'];
    save_contents_to_file('comments', $comments);
}
>

輸出內(nèi)容給(另一個)用戶

form action='xss.php' method='POST'>
Enter your comments here: br />
textarea name='comment'>/textarea> br />
input type='submit' value='Post comment' />
/form>hr />br />

?php echo $comments; ?>

將會發(fā)生什么事?

  煩人的彈窗

  刷新或重定向

  損壞網(wǎng)頁或表單

  竊取cookie

  AJAX(XMLHttpRequest)

  防止XSS攻擊

  為了防止XSS攻擊,使用PHP的htmlentities()函數(shù)過濾再輸出到瀏覽器。htmlentities()的基本用法很簡單,但也有許多高級的控制,請參閱XSS速查表。

3、會話固定

  會話安全,假設(shè)一個PHPSESSID很難猜測。然而,PHP可以接受一個會話ID通過一個Cookie或者URL。因此,欺騙一個受害者可以使用一個特定的(或其他的)會話ID 或者釣魚攻擊。

  4、會議捕獲和劫持

  這是與會話固定有著同樣的想法,然而,它涉及竊取會話ID。如果會話ID存儲在Cookie中,攻擊者可以通過XSS和JavaScript竊取。如果會話ID包含在URL上,也可以通過嗅探或者從代理服務(wù)器那獲得。

  防止會話捕獲和劫持

  更新ID

  如果使用會話,請確保用戶使用SSL

  5、跨站點請求偽造(CSRF)

  CSRF攻擊,是指一個頁面發(fā)出的請求,看起來就像是網(wǎng)站的信任用戶,但不是故意的。它有許多的變體,比如下面的例子:

img src='http://example.com/single_click_to_buy.php?user_id=123item=12345'>

  防止跨站點請求偽造

  一般來說,確保用戶來自你的表單,并且匹配每一個你發(fā)送出去的表單。有兩點一定要記住:

  對用戶會話采用適當(dāng)?shù)陌踩胧?,例?給每一個會話更新id和用戶使用SSL。

  生成另一個一次性的令牌并將其嵌入表單,保存在會話中(一個會話變量),在提交時檢查它。

  6、代碼注入

  代碼注入是利用計算機(jī)漏洞通過處理無效數(shù)據(jù)造成的。問題出在,當(dāng)你不小心執(zhí)行任意代碼,通常通過文件包含。寫得很糟糕的代碼可以允許一個遠(yuǎn)程文件包含并執(zhí)行。如許多PHP函數(shù),如require可以包含URL或文件名,例如:

form>Choose theme:
    select name = theme>
        option value = blue>Blue/option>
        option value = green>Green/option>
        option value = red>Red/option>
    /select>
    input type = submit>
/form>
?php
    if($theme) {
        require($theme.'.txt');
    }
?>

在上面的例子中,通過傳遞用戶輸入的一個文件名或文件名的一部分,來包含以"http://"開頭的文件。

  防止代碼注入

  過濾用戶輸入

  在php.ini中設(shè)置禁用allow_url_fopen和allow_url_include。這將禁用require/include/fopen的遠(yuǎn)程文件。

  其他的一般原則

  1. 不要依賴服務(wù)器配置來保護(hù)你的應(yīng)用,特別是當(dāng)你的web服務(wù)器/ PHP是由你的ISP管理,或者當(dāng)你的網(wǎng)站可能遷移/部署到別處,未來再從別處遷移/部署在到其他地方。請在網(wǎng)站代碼中嵌入帶有安全意識的檢查/邏輯(HTML、JavaScript、PHP,等等)。

  2. 設(shè)計服務(wù)器端的安全腳本:

  —例如,使用單行執(zhí)行 - 單點身份驗證和數(shù)據(jù)清理

  —例如,在所有的安全敏感頁面嵌入一個PHP函數(shù)/文件,用來處理所有登錄/安全性邏輯檢查

  3. 確保你的代碼更新,并打上最新補丁。

到此這篇關(guān)于6個常見的 PHP 安全性攻擊實例和阻止方法的文章就介紹到這了,更多相關(guān)PHP安全性攻擊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP安全配置優(yōu)化詳解
  • PHP網(wǎng)站常見安全漏洞,及相應(yīng)防范措施總結(jié)
  • PHP安全之register_globals的on和off的區(qū)別
  • PHP開發(fā)api接口安全驗證操作實例詳解
  • Linux下PHP+Apache的26個必知的安全設(shè)置
  • php解決安全問題的方法實例
  • 實例分析10個PHP常見安全問題
  • 針對PHP開發(fā)安全問題的相關(guān)總結(jié)
  • 深入理解PHP中mt_rand()隨機(jī)數(shù)的安全
  • PHP網(wǎng)頁安全認(rèn)證的實例詳解
  • php常見的網(wǎng)絡(luò)攻擊及防御方法

標(biāo)簽:那曲 池州 孝感 哈密 日照 濟(jì)源 北京 阿里

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《6個常見的 PHP 安全性攻擊實例和阻止方法》,本文關(guān)鍵詞  6個,常見,的,PHP,安全性,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《6個常見的 PHP 安全性攻擊實例和阻止方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于6個常見的 PHP 安全性攻擊實例和阻止方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章