91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 安全性攻擊有哪些

發布時間:2020-12-16 16:03:57 來源:億速云 閱讀:159 作者:Leah 欄目:開發技術

PHP 安全性攻擊有哪些?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  1、SQL注入

  SQL注入是一種惡意攻擊,用戶利用在表單字段輸入SQL語句的方式來影響正常的SQL執行。還有一種是通過system()或exec()命令注入的,它具有相同的SQL注入機制,但只針對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";
}

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

  防止SQL注入

  選項:

  使用mysql_real_escape_string()過濾數據

  手動檢查每一數據是否為正確的數據類型

  使用預處理語句并綁定變量

  使用準備好的預處理語句

  分離數據和SQL邏輯

  預處理語句將自動過濾(如:轉義)

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

$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(跨站點腳本攻擊)是一種攻擊,由用戶輸入一些數據到你的網站,其中包括客戶端腳本(通常JavaScript)。如果你沒有過濾就輸出數據到另一個web頁面,這個腳本將被執行。

  接收用戶提交的文本內容

<?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);
}
>

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

<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; ?>

將會發生什么事?

  煩人的彈窗

  刷新或重定向

  損壞網頁或表單

  竊取cookie

  AJAX(XMLHttpRequest)

  防止XSS攻擊

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

3、會話固定

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

PHP 安全性攻擊有哪些

  4、會議捕獲和劫持

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

  防止會話捕獲和劫持

  更新ID

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

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

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

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

  防止跨站點請求偽造

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

  對用戶會話采用適當的安全措施,例如:給每一個會話更新id和用戶使用SSL。

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

  6、代碼注入

  代碼注入是利用計算機漏洞通過處理無效數據造成的。問題出在,當你不小心執行任意代碼,通常通過文件包含。寫得很糟糕的代碼可以允許一個遠程文件包含并執行。如許多PHP函數,如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中設置禁用allow_url_fopen和allow_url_include。這將禁用require/include/fopen的遠程文件。

  其他的一般原則

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

  2. 設計服務器端的安全腳本:

  —例如,使用單行執行 - 單點身份驗證和數據清理

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

看完上述內容,你們掌握 PHP 安全性攻擊有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

胶州市| 固安县| 阿克苏市| 大竹县| 周宁县| 灵台县| 东乌| 建水县| 保亭| 武山县| 特克斯县| 临西县| 泰兴市| 江源县| 应用必备| 平舆县| 东光县| 婺源县| 南华县| 东宁县| 阳西县| 鞍山市| 平乐县| 开江县| 南漳县| 楚雄市| 西林县| 正宁县| 巴楚县| 湖南省| 靖远县| 鲜城| 乌苏市| 宿州市| 涞水县| 灵宝市| 伊通| 谷城县| 泰兴市| 合川市| 莎车县|