「LiteSite/signup/網路安全」修訂間的差異
跳至導覽
跳至搜尋
(→基本修改:) |
(→基本修改:) |
||
| (未顯示同一使用者於中間所作的 5 次修訂) | |||
| 第1行: | 第1行: | ||
[[分類:LiteSite]] | [[分類:LiteSite]] | ||
===前提:=== | ===前提:=== | ||
| − | + | 網路機器人: | |
| + | # 可以直接用 HTTP POST 打你的 signup.php ,完全繞過瀏覽器與 JavaScript。 | ||
| + | # 真正「寫入 AL_users」的地方在 signup.php 的 surveySubmit 分支。 | ||
| + | # 只要對方能 POST 出一個看起來像正常表單的有效負載,就會進資料表。 | ||
| + | # 把 verify 的檢查提升到「只要要寫入 DB 就一定先檢查」的位置,而不是散落在流程中(避免未來改動、或某些分支漏檢查)。 | ||
| + | 而原來 signup.php 是在造完「"insert into ".$tbl." set …";」SQL 命令後,檢查完「帳號與密碼不得相同」後, $sql 要插入前再檢查「if($_POST['verify']=='我不是機器人'){」。 | ||
| − | + | PS.這樣應該也能攔住機器人注入,為什麼沒攔住? | |
| − | |||
| − | |||
| − | |||
| − | |||
===基本修改:=== | ===基本修改:=== | ||
| 第13行: | 第14行: | ||
<pre>}elseif(isset($_POST['surveySubmit']) && $_POST['surveySubmit']==$surveySubmit){</pre> | <pre>}elseif(isset($_POST['surveySubmit']) && $_POST['surveySubmit']==$surveySubmit){</pre> | ||
馬上加: | 馬上加: | ||
| − | <pre>$verify = isset($_POST['verify']) ? trim($_POST['verify']) : ''; | + | <pre style='font-size:95%'>$verify = isset($_POST['verify']) ? trim($_POST['verify']) : ''; |
if ($verify !== '我不是機器人') { | if ($verify !== '我不是機器人') { | ||
| − | $msg = "<p class='signup' align='center' style='color:red'>機器人驗證錯誤:請在「機器人驗證」欄輸入「我不是機器人」。</p>"; | + | $msg="<p class='signup' align='center' style='color:red'>機器人驗證錯誤:請在「機器人驗證」欄輸入「我不是機器人」。</p>"; |
echo dispWeb($msg, $html1, $html2); | echo dispWeb($msg, $html1, $html2); | ||
exit; | exit; | ||
}</pre> | }</pre> | ||
| + | 然後剔除原來在分支中的「if($_POST['verify']=='我不是機器人'){」及其相關的程式碼。 | ||
於 2026年2月20日 (五) 17:28 的最新修訂
前提:
網路機器人:
- 可以直接用 HTTP POST 打你的 signup.php ,完全繞過瀏覽器與 JavaScript。
- 真正「寫入 AL_users」的地方在 signup.php 的 surveySubmit 分支。
- 只要對方能 POST 出一個看起來像正常表單的有效負載,就會進資料表。
- 把 verify 的檢查提升到「只要要寫入 DB 就一定先檢查」的位置,而不是散落在流程中(避免未來改動、或某些分支漏檢查)。
而原來 signup.php 是在造完「"insert into ".$tbl." set …";」SQL 命令後,檢查完「帳號與密碼不得相同」後, $sql 要插入前再檢查「if($_POST['verify']=='我不是機器人'){」。
PS.這樣應該也能攔住機器人注入,為什麼沒攔住?
基本修改:
在 signup.php 這段開始處:
}elseif(isset($_POST['surveySubmit']) && $_POST['surveySubmit']==$surveySubmit){
馬上加:
$verify = isset($_POST['verify']) ? trim($_POST['verify']) : '';
if ($verify !== '我不是機器人') {
$msg="<p class='signup' align='center' style='color:red'>機器人驗證錯誤:請在「機器人驗證」欄輸入「我不是機器人」。</p>";
echo dispWeb($msg, $html1, $html2);
exit;
}
然後剔除原來在分支中的「if($_POST['verify']=='我不是機器人'){」及其相關的程式碼。