2013-10-29 93 views
0

在尋找如何保護網站的可能方法時,我發現了很多信息。通過這些信息需要幾個月的時間。什麼是短規則(要記住)保持(PHP)代碼安全?

所以,問題是:什麼是簡短的規則(要記住)保持(PHP)代碼的安全?

使用的網站,黑客會危害:

使用輸入表單中輸入的東西時,
  1. ;
  2. 使用輸入表單上傳內容時;
  3. 在地址欄中輸入內容時。

據我所知,沒有其他的方法(只使用網站)黑客可能會造成傷害。

1)使用輸入表單與用戶輸入相關的規則。

1.1。在mysql中記錄。 PDO準備的報表如: INSERT INTO TableName (Column1, Column2, Column3) VALUES (???)。因此,如果任何?將包含刪除數據庫的代碼,則?的內容將被記錄在mysql中並且不會被執行。如果代碼如INSERT INTO TableName (Column1, Column2, Column3) VALUES ($variable, $variable, $variable),則可以執行此類代碼。

1.2。從mysql顯示爲html記錄並顯示用戶的輸入。 對於字符串必須使用回波htmlspecialchars($variable) 對於數組必須使用這樣https://stackoverflow.com/a/2003212/2465936

function filter(&$array) { 
    $array = htmlspecialchars($array, ENT_QUOTES, 'UTF-8'); 
} 
array_walk_recursive($array, "filter"); 
echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

1.3。 JSON(Javascript)輸出。例如,我有迴音json_encode($bad_content);如何逃避它?用echo json_encode(JSONObject.escape ($bad_content))?請指教。

2)使用輸入表單與上傳相關的規則。目前在我的代碼中,您看到了$data = new Spreadsheet_Excel_Reader(($_FILES['file']['tmp_name']), false, false)。目前,我不知道該怎麼做。如果我想在MySQL中記錄Excel或CSV文件的內容,那麼沒關係,我使用PDO準備好的語句。但是有必要清理文件名?我試圖上傳一個名爲header('Location: http://www.google.com');的CSV文件。所有數據按預期導入。請,一個建議是否有必要消毒/逃脫的東西。如果是,那麼如何?

3)規則,與在客戶端瀏覽器的地址欄中輸入內容有關。 如何避免與URL操作相關的問題?

例如,鍵入 http://www.mywebsite.com/bookreports.asp?reportID=21'; drop table myTablename--Not Found The requested URL /bookreports.php was not found on this server.並沒有什麼事情發生

怎樣做才能避免可能出現的問題,如果黑客在地址欄類型意想不到的事情?我需要檢查每個文件的URL嗎? 從哪裏危害到這種情況?好的,用戶可以輸入密碼保護頁的網址。但在密碼保護頁面中,我檢查瀏覽器會話ID並與服務器會話ID進行比較。

+0

這裏有很多問題:C – MackieeE

+0

您的問題是廣泛的!編程確實需要您的一些學習和閱讀。學習捷徑並不是最好的開始。 – StBlade

+0

我只想寫一些簡短的規則作爲參考。假設記住並遵循主要規則是有用的。 – user2465936

回答

1

重要的是請求不能通過URL僞造。使用正確的工具,可以輕鬆設置POST參數以及請求的標題,包括但不限於Cookie。

+0

如何避免在這種情況下可能出現的問題?據我所知,相同。對於mysql,pdo準備好了,用於html輸出'htmlspecialchars'? – user2465936

+0

這絕對取決於你想要做什麼。在某些情況下,將預期輸入路由到某些功能會很重要,並且會爲意外輸入返回錯誤。 例如,如果您正在訪問用戶輸入的文件。如果你通過一個'index.php'來路由你的所有請求,那麼你必須確保你不要像'file_get_contents($ _ GET ['filename'])''這樣做,而是確保首先檢查路徑和文件結尾是否符合正則表達式,不允許使用'../'移動目錄。 – MildlySerious