Latest

健康檢查

最近做了健康檢查,以下是快速筆記: 繳交糞檢 尿檢 血液 (裝成三瓶) 心臟 (貼至少十個貼片,然後分別連接上管子) X光 (正面、側面) 肛門 身高和體重、體脂肪和骨頭密度等等、視力、辨色力、眼壓 照胃鏡前 (右手注射葡萄糖並留著注射器、喝胃乳、嘴巴噴麻藥兩次:一次先吞下去、之後含一下吞下去、側躺在闖上戴上呼吸器、右手注射麻藥時痛痛的)

防止HTML和SQL攻擊...還有mysql_connect()之連結失敗

不得不說上坤哥的課,真的是大學生涯的(知識)飽食時間!!
而這次坤哥在PHP課所教的是防止有人透過輸入HTML語法來破壞架構以及SQL攻擊

回想起4,5年前有位高中同學曾經使用過,人才呀~
(我倒是現在才領悟~"~)

- - -

首先
是防止HTML語法

echo $comment;

[輸入]
<b>&gt"哈哈"</b>
<b>&gt"哈囉"</b>
[輸出]
>"哈哈" >哈囉

再來~
加上禁止HTML語法換行功能
echo nl2br(htmlentities($comment, ENT_QUOTES));

[輸入]
<b>&gt"哈哈"</b>
<b>&gt"哈囉"</b>
[輸出]
<b>&gt"哈哈"</b>
<b>&gt"哈囉"</b>

但不知道為什麼我加了可以轉換單引號和雙引號的ENT_QUOTES卻依舊沒轉換= =

- - -

要防止SQL攻擊則是先講如何攻擊:

像是在密碼框輸入' OR ' ' = '
SQL指令就會變成"SELECT * FROM `person` WHERE pw`=' ' OR ' ' = ' ' ";
因為OR必為true,所以按下登入鍵後login success~♪

防止的方法則是:
$pw  = mysql_real_escape_string($_POST["password"]);

mysql_real_escape_string()可以讓一些符號做轉換
像是:
[ ' ] 變成 [ \' ]
[ " ] 變成 [ \" ]

但是以上方法我在學校(PHP 7 以下)測試成功在家(PHP 7.0.4版)卻跑出以下訊息 ↓
Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\test.php:39 Stack trace: #0 {main} thrown in C:\xampp\htdocs\test.php on line 39

上網得知是因為PHP 7.0.0版已經移除mysql_connect()這個方法了@@
新的則是用mysqli_connect()

同理可用在修改其他SQL的方法上
如:mysqli_real_escape_string()

不過...
全部都修改後~
我為什麼連不到資料表=口=

To be continued...

留言

這個網誌中的熱門文章

公司職務 × 英文縮寫 × 中文對照 (2023.04.21 更新)

健康檢查

【Unity】TextMesh Pro 顯示中文