第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PDO準備好的陳述有多安全

PDO準備好的陳述有多安全

慕桂英3389331 2019-11-30 13:46:58
不久前開始使用PDO準備的語句,據(jù)我了解,它為您完成了所有轉(zhuǎn)義/安全性工作。例如,假設(shè)$ _POST ['title']是一個表單字段。$title = $_POST['title'];$query = "insert into blog(userID, title) values (?, ?)"$st = $sql->prepare($query);$st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT);$st->bindParam(2, $title);$st->execute();這真的安全嗎?我還需要做其他事情嗎?我還需要考慮什么?謝謝。
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經(jīng)驗 獲得超4個贊

嚴格來說,實際上不需要轉(zhuǎn)義,因為參數(shù)值永遠不會插值到查詢字符串中。


查詢參數(shù)的工作方式是在調(diào)用時將查詢發(fā)送到數(shù)據(jù)庫服務(wù)器prepare(),然后在調(diào)用時將參數(shù)值發(fā)送到數(shù)據(jù)庫服務(wù)器execute()。因此,它們與查詢的文本形式分開存放。SQL注入永遠不會有機會(提供的PDO::ATTR_EMULATE_PREPARES是錯誤的)。


因此,可以,查詢參數(shù)可以幫助您避免這種形式的安全漏洞。


他們是否100%證明沒有任何安全漏洞?不,當然不是。您可能知道,查詢參數(shù)僅在SQL表達式中代替單個文字值。您不能用單個參數(shù)替代值列表,例如:


SELECT * FROM blog WHERE userid IN ( ? );

您不能使用參數(shù)使表名或列名動態(tài)化:


SELECT * FROM blog ORDER BY ?;

您不能將參數(shù)用于任何其他類型的SQL語法:


SELECT EXTRACT( ? FROM datetime_column) AS variable_datetime_element FROM blog;

因此,在很多情況下,您必須在prepare()調(diào)用之前將查詢作為字符串處理。在這些情況下,您仍然需要仔細編寫代碼以避免SQL注入。


查看完整回答
反對 回復(fù) 2019-11-30
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

從SQL注入是安全的。

幾件事情不安全:

  • 拒絕服務(wù)(導(dǎo)致創(chuàng)建過多的行)

  • 跨站點腳本攻擊(如果標題回顯給另一個用戶)

安全不僅僅是阻止SQL注入。


查看完整回答
反對 回復(fù) 2019-11-30
?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊

關(guān)于SQL注入,我相信這是最安全的方法,尤其是在使用PDO :: PARAM_INT等常量的情況下。


查看完整回答
反對 回復(fù) 2019-11-30
  • 3 回答
  • 0 關(guān)注
  • 569 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號