php安全編程

來源:互聯網
上載者:User

標籤:

話不多說,為了確保web內容的安全,這裡有一些常規的安全標準準則:

1.不相信表單

  攻擊表單其實很簡單,如果有人在他們的瀏覽器去關閉了JS功能,你的用戶端驗證就失敗了。

  使用者在很大程度上都是通過表單和後台進行互動,因此表單是最大的安全風險,圍繞著表單產生的攻擊很多,像mysql注入攻擊,XSS等,我們一定要在後端去驗證傳遞給指令碼的資料。

2.不相信任何使用者

  表單的操縱者,這點無需多言!

3.關閉全域的變數

  有時候其實最大的安全性漏洞是啟用了register_globals配置參數,幸運的是PHP4.2版本之後預設是關閉了這個選項,但還是不得不防,如果一個伺服器啟用了全域變數,會自動的為全域變數賦予任何形式的參數。

<input name=‘username‘ type=‘text‘>

  假如說運行上述代碼,啟動了register_globals的PHP會將參數賦值到$username中,雖然看起來比$_POST[‘username‘]更為簡單,但是安全問題突出,php會設定該變數的值為通過GET或者POST的參數發送到指令碼的任何值。

1 if(auth()){2    $auth_flag=1;  3 }

  正常的情況下是,只有通過了auth函數的檢驗,$auth_flag為1,但是如果register_globals啟用,任何人可以通過GET參數$auth_flag=1去覆蓋它,從而失去驗證的意義。所以我們應該從預定義的$_POST數組去取變數資訊,檔案上傳的資訊儲存在$_FILES數組中,如果不清楚method,可以通過$_REQUEST去擷取。

$_REQUEST是$_GET,$_POST,$_COOKIE數組的結合,預設的順序是cookie,post,get。

4.一些安全的配置選項

明顯的用於生產伺服器上的。

register_globals=off

safe_mode=off

error_reporting=off,生產伺服器使用錯誤記錄檔

停用這些函數:system(),exec(),passthru(),shell_exec()..

expose_php=off 該功能會向Apache頭部添加PHP的版本資訊

5.sql注入攻擊

  通過在參數中插入有害的sql程式碼片段,進行伺服器的攻擊

例如:假如我們從表單取一個name變數,去mysql伺服器查詢,構造如下的sql

$sql="select * from table where name=‘$name‘";

對於這樣,我們應該先去轉義一下,trim,addslashes,htmlspecialchars,等,也許有人會把$name變成如下資訊:

tianye‘;drop table;

一般來說,防止sql注入的方法有一下幾種:

  (1)密碼比對->通過使用者名稱查詢到密碼,然後將該密碼於使用者輸入的密碼進行匹配。

  (2)總是對資料進行addslashes或者mysql_real_escape_string轉義。

      (3)使用預先處理的方式進行查詢

6.基本的XSS攻擊

  xss表示跨站指令碼攻擊,該漏洞發生在用戶端,最常見的形式是在使用者提交的內容中放入js指令碼以便擷取使用者cookie中的資料,由於大部分網站以cookie或者session來驗證使用者,所以偷取的資訊可使用者類比使用者。

對於此類攻擊最常見的預防方式是便是轉換實體,使用如下函數,trim,utf8_decode,htmlspecialchars,htmlentities,將指令碼裡的htm標籤轉化為實體,不被瀏覽器渲染。雖然這樣會預防大部分的攻擊,但是一些xss攻擊者會用16進位貨值utf編碼來攻擊,他們在url的get參數中發送編碼,讓瀏覽器運行16進位的代碼,瀏覽器一運行將得到類似<script>....</script>等的注入代碼,為了防止,我們需要將16進位中的#,$等轉換為他們對應的實體。

php安全編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.