日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 入门 - 9.安全

發布時間:2024/1/17 php 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 入门 - 9.安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 過濾輸出
    • 跨站腳本
      • 預防方法
    • SQL 注入
      • 預防方法
    • 轉義輸出文件名
    • 會話固定
      • 預防方法
    • 文件上傳
    • PHP 代碼

過濾輸出

開發一個 Web 網站要了解的最基本的事情之一是:所有非程序自己生成的信息都有潛在的污染,包括表單數據、文件和數據庫。也就是說任何時候我們都不要相信用戶輸入的數據。

關于過濾的最佳實踐:

  • 用白名單的方法。這意味著你寧可謹慎地假設數據都是無效的,除非你能證明它有效。
  • 不要糾正無效的數據。歷史證明嘗試糾正無效的數據常常會由于錯誤導致安全漏洞。
  • 使用命名來幫助區分過濾好的和污染的數據。如果你不確定是否過濾了,過濾是無用的。

跨站腳本

跨站腳本(XSS, Cross-site scripting)由于簡寫 CSS 與層疊樣式表重名,而改寫成 XSS 。是最常見的網頁程序安全漏洞,是注入攻擊的一種。其特點是不對服務器造成任何傷害,而是通過一些正常的站內交互途徑,例如發布評論,提交含有 JavaScript 的內容的文本。

預防方法

對于任何用戶輸入的信息,都要進行轉義/過濾。

SQL 注入

SQL 注入是將惡意的 SQL 查詢或添加語句插入到應用的輸出參數中,在由數據庫服務器解析執行,從而達到攻擊目的。SQL 注入很像 XSS 。

預防方法

  • 使用參數化查詢來設計數據訪問功能。
  • 轉義輸出來達到過濾

轉義輸出文件名

用 realpath() 和 basename() 來檢查文件名。

  • realpath() : 返回規范化的絕對路徑名

    chdir('/var/www/'); // 改變目錄 echo realpath('./../../etc/passwd'); // /etc/passwd
  • basename() : 返回路徑中的文件名部分

這里舉一個例子:檢查當前傳入的參數文件名,是否為規范的文件名(也就是沒有 ./ …/ 的文件名)

$filename = $_POST['filename']; $vetted = basename(realpath($filename));if ($filename !== $vetted){die("{$filename} is not good filename"); }

會話固定

攻擊者可以很簡單的拿到目標用戶的會話標識,進而目標用戶使用攻擊者的會話標識登錄站點,攻擊者劫持會話成功.

預防方法

  • 當用戶登錄的時候重置 sessionID 。
  • sessionID 閑置過久,重置 sessionID 。
  • 當用戶權限變更時重置 sessionID 。

文件上傳

在文件上傳時,不要相信瀏覽器提供的文件名。正確的方法時:用戶交互中用瀏覽器提供的名字,但是要自己生成唯一的名字用來調用文件。

PHP 代碼

我們知道 eval() 函數,可以讓腳本執行任意PHP代碼。帶 /e 選項的 preg_replace() 函數與 eval() 函數效果一樣。

以上函數不要使用用戶提供的數據,因為這樣很容易遭到攻擊。

感謝你看到了這里。如果文章有錯誤,請評論指正,謝謝!

總結

以上是生活随笔為你收集整理的PHP 入门 - 9.安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。