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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

htmlSpecialchars和MySQL_REARY_EXECH_String是否保證PHP代碼

htmlSpecialchars和MySQL_REARY_EXECH_String是否保證PHP代碼

htmlSpecialchars和MySQL_REARY_EXECH_String是否保證PHP代碼不受注入的影響?今天早些時(shí)候有人問(wèn)了一個(gè)關(guān)于Web應(yīng)用中的輸入驗(yàn)證策略.在撰寫本報(bào)告時(shí),最上面的答案是PHP只是使用htmlspecialchars和mysql_real_escape_string.我的問(wèn)題是:這是否總是足夠的?我們還需要知道更多嗎?這些功能在哪里分解?
查看完整描述

3 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

除了Cheekysoft的出色回答:

  • 是的,它們會(huì)保護(hù)你的安全,但前提是它們的使用是絕對(duì)正確的。如果不正確地使用它們,您將仍然容易受到攻擊,并且可能會(huì)出現(xiàn)其他問(wèn)題(例如,數(shù)據(jù)損壞)。
  • 請(qǐng)改用參數(shù)化查詢(如上文所述)。您可以通過(guò)例如PDO或PEARDB之類的包裝器使用它們。
  • 確保魔術(shù)_引號(hào)_gpc和魔術(shù)_引號(hào)_運(yùn)行時(shí)在任何時(shí)候都是關(guān)閉的,并且不會(huì)意外地打開(kāi),甚至不會(huì)被短暫地打開(kāi)。這些都是PHP開(kāi)發(fā)人員為防止安全問(wèn)題(破壞數(shù)據(jù))而進(jìn)行的一次早期和嚴(yán)重錯(cuò)誤的嘗試。

在防止HTML注入(例如跨站點(diǎn)腳本)方面并沒(méi)有真正的靈丹妙藥,但如果您使用庫(kù)或模板系統(tǒng)輸出HTML,則可以更容易地實(shí)現(xiàn)它。閱讀相關(guān)文檔,以了解如何恰當(dāng)?shù)靥颖苁挛铩?/trans>

在HTML中,需要根據(jù)上下文進(jìn)行不同的轉(zhuǎn)義。對(duì)于放入Javascript中的字符串尤其如此。


查看完整回答
反對(duì) 回復(fù) 2019-06-20
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

我絕對(duì)同意上述的說(shuō)法,但我想補(bǔ)充一件事,以回應(yīng)Cheekysoft的答覆,特別是:

當(dāng)涉及到數(shù)據(jù)庫(kù)查詢時(shí),始終嘗試并使用準(zhǔn)備好的參數(shù)化查詢。mysqli和PDO庫(kù)支持這一點(diǎn)。這比使用轉(zhuǎn)義函數(shù)(如MySQL_REAL_EXECH_String)安全得多。

是的,MySQL_REARY_EXIFE_String實(shí)際上只是一個(gè)字符串轉(zhuǎn)義函數(shù)。這不是一顆神奇的子彈。它所要做的就是轉(zhuǎn)義危險(xiǎn)字符,以便它們可以安全地在單個(gè)查詢字符串中使用。但是,如果您不事先清理您的輸入,那么您將容易受到某些攻擊向量的攻擊。

想象一下下面的SQL:

$Response=“從表中選擇字段id=”.mysql_Real_EXECH_String($_POST[‘id’]);

您應(yīng)該能夠看到這很容易被利用。假設(shè)id參數(shù)包含公共攻擊向量:

1或1=1

沒(méi)有危險(xiǎn)的字符在那里編碼,所以它將直接通過(guò)轉(zhuǎn)義過(guò)濾器。離開(kāi)我們:

從表中選擇字段,其中id=1或1=1

我編寫了一個(gè)快速的小函數(shù),放在我的數(shù)據(jù)庫(kù)類中,它將剔除任何不是數(shù)字的東西。它使用PREG_REPLE,所以有一個(gè)更優(yōu)化的函數(shù),但它在緊要關(guān)頭工作.

function Numbers($input) {
  $input = preg_replace("/[^0-9]/","", $input);
  if($input == '') $input = 0;
  return $input;}

所以不要用

$Resue=“從表中選擇字段,其中id=”.mysqlrealfreestring(“1 or 1=1”);

我會(huì)用

$READ=“從表中選擇字段,其中id=”.Numbers(“1 or 1=1”);

它將安全地運(yùn)行查詢。

從表中選擇字段,其中id=111

當(dāng)然,這只是阻止了它顯示正確的行,但我認(rèn)為這對(duì)試圖將SQL注入到您的站點(diǎn)的人來(lái)說(shuō)不是什么大問(wèn)題;)


查看完整回答
反對(duì) 回復(fù) 2019-06-20
  • 3 回答
  • 0 關(guān)注
  • 771 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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