• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 淺談php web安全

    發表于:2013-12-31來源:IT博客大學習作者:Benwin點擊數: 標簽:php
    首先,筆記不是web安全的專家,所以這不是web安全方面專家級文章,而是學習筆記、細心總結文章,里面有些是我們phper不易發現或者說不重視的東西。

      前言:

      首先,筆記不是web安全的專家,所以這不是web安全方面專家級文章,而是學習筆記、細心總結文章,里面有些是我們phper不易發現或者說不重視的東西。所以筆者寫下來方便以后查閱。在大公司肯定有專門的web安全測試員,安全方面不是 phper考慮的范圍。但是作為一個phper對于安全知識是:“知道有這么一回事,編程時自然有所注意”。有什么不妥、錯誤的請聯系:chen_bin_wen@163.com/445235728@qq.com

      概要:

      1、php一些安全配置

      (1)關閉php提示錯誤功能

      (2)關閉一些“壞功能”

      (3)嚴格配置文件權限。

      2、嚴格的數據驗證,你的用戶不全是“好”人

      2.1為了確保程序的安全性,健壯性,數據驗證應該包括內容。

      2.2程序員容易漏掉point或者說需要注意的事項

      3、防注入

      3.1簡單判斷是否有注入漏洞以及原理

      3.2常見的mysql注入語句

      (1)不用用戶名和密碼

      (2)在不輸入密碼的情況下,利用某用戶

      (3)猜解某用戶密碼

      (4)插入數據時提權

      (5)更新提權和插入提權同理

      (6)惡意更新和刪除

      (7)union、join等

      (8)通配符號%、_

      (9)還有很多猜測表信息的注入sql

      33防注入的一些方法

      2.3.1 php可用于防注入的一些函數和注意事項。

      2.3.2防注入字符優先級。

      2.3.3防注入代碼

      (1)參數是數字直接用intval()函數

      (2)對于非文本參數的過濾

      (3)文本數據防注入代碼。

      (4)當然還有其他與addslashes、mysql_escape_string結合的代碼。

      4、防止xss攻擊

      4.1Xss攻擊過程

      4.2常見xss攻擊地方

      4.3防XSS方法

      5、CSRF

      5.1簡單說明CSRF原理

      5.2防范方法

      6、防盜鏈

      7、防拒CC攻擊

      ---------------------------------------------------------------------

      1、php一些安全配置

      (1)關閉php提示錯誤功能

      在php.ini 中把display_errors改成

      display_errors = OFF

      或在php文件前加入

      error_reporting(0)

      1)使用error_reporting(0);失敗的例子:

      A文件代碼:

      

      error_reporting(0);

      echo 555

      echo 444;

      ?>

      錯誤:

      Parse error: parse error, expecting `','' or `';'' in E:\webphp\2.php on line 4

      2)使用error_reporting(0);成功的例子:

      a文件代碼:

      

      error_reporting(0);

      include("b.php");

      ?>

      b文件代碼:

      

      echo 555

      echo 444;

      ?>

      這是很多phper說用error_reporting(0)不起作用。第一個例子A.php里面有致命錯誤,導致不能執行,不能執行服務器則不知有這個功能,所以一樣報錯。

      第二個例子中a.php成功執行,那么服務器知道有抑制錯誤功能,所以就算b.php有錯誤也抑制了。

      ps:抑制不了mysql錯誤。

      (2)關閉一些“壞功能”

      1)關閉magic quotes功能

      在php.ini 把magic_quotes_gpc = OFF

      避免和addslashes等重復轉義

      2)關閉register_globals = Off

      在php.ini 把register_globals = OFF

      在register_globals = ON的情況下

      地址欄目:http:www.phpben.com?bloger=benwin

      

      //$bloger = $_GET['bloger'] //因為register_globals = ON 所以這步不用了直接可以用$bloger

      echo$bloger;

      ?>

      這種情況下會導致一些未初始化的變量很容易被修改,這也許是致命的。所以把register_globals = OFF關掉

      (3)嚴格配置文件權限。

      為相應文件夾分配權限,比如包含上傳圖片的文件不能有執行權限,只能讀取

      2、嚴格的數據驗證,你的用戶不全是“好”人。

      記得筆者和一個朋友在討論數據驗證的時候,他說了一句話:你不要把你用戶個個都想得那么壞!但筆者想說的這個問題不該出現在我們開發情景中,我們要做的是嚴格驗證控制數據流,哪怕10000萬用戶中有一個是壞用戶也足以致命,再說好的用戶也有時在數據input框無意輸入中文的時,他已經不經意變“壞”了。

      2.1為了確保程序的安全性,健壯性,數據驗證應該包括

      (1)關鍵數據是否存在。如刪除數據id是否存在

      (2)數據類型是否正確。如刪除數據id是否是整數

      (3)數據長度。如字段是char(10)類型則要strlen判斷數據長度

      (4)數據是否有危險字符

      數據驗證有些人主張是把功能完成后再慢慢去寫安全驗證,也有些是邊開發邊寫驗證。筆者偏向后者,這兩種筆者都試過,然后發現后者寫的驗證相對健壯些,主要原因是剛開發時想到的安全問題比較齊全,等開發完功能再寫時有兩個問題,一個phper急于完成指標草草完事,二是確實漏掉某些point。

      2.2程序員容易漏掉point或者說需要注意的事項:

      (1) 進庫數據一定要安全驗證,筆者在廣州某家公司參與一個公司內部系統開發的時候,見過直接把$_POST數據傳給類函數 classFunctionName($_POST),理由竟然是公司內部使用的,不用那么嚴格。暫且不說邏輯操作與數據操控耦合高低問題,連判斷都沒判斷的操作是致命的。安全驗證必須,沒任何理由推脫。

    原文轉自:http://blogread.cn/it/article/6086

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>