iT邦幫忙

0

如何防止chrome用檢查破解語法

  • 分享至 

  • xImage

各位大大好:

我做了兩個輸入框,先把輸入框A隱藏(display:none;),顯示輸入框B,輸入框B若輸入正確的密碼,輸入框A就會跑出來,但我想請問若用chrome檢查,把display:block,輸入框A就會顯示,再按鈕就會開始計數,請問要怎麼防止用chrome檢察破解語法呢?

謝謝

#content1{
display:none;
}

<div id="contentpw">
<h1>統計選票,請先登入</h1>

    <div class="form-group col-md-6 ">
    <input type="text" class="form-control" id="pw" name="pw" autocomplete="off" placeholder="請先輸入密碼驗證"/>
    </div>
     <div class="panel-body">
     <div class="btn-toolbar">
     <button type="submit" id="btnSubmit" class="btn btn-primary btn-sm" onclick="elecpw()">確認密碼</button>
     </div>
     </div>
</div>
<div>
<div id="content1">
<h1>請輸入圈選編號</h1>
    <div class="form-group col-md-6 ">
    <input type="text" class="form-control" id="elecid" name="elecid" autocomplete="off" placeholder="圈選編號"/>
    </div>
     <div class="panel-body">
     <div class="btn-toolbar">
     <button type="submit" id="btnSubmit" class="btn btn-primary btn-sm" onclick="myelec()">確認選票</button>
     </div>
     </div>
</div>
<div>
function elecpw(){

var pw=$("#pw").val();

$.get('pw.txt', function(data) {
  
    if(pw==data){
     $('#contentpw').css('display', 'none');
     $( '#content1' ).show( "slow" );
    }
    else{
    
    alert("密碼輸入錯誤");
    
    }
  
}, 'text');

}
所有的瀏覽器都能檢查語法...不止chrome
混水摸魚 iT邦研究生 2 級 ‧ 2018-10-05 10:12:00 檢舉
重要的東西不寫在前端,還有不要相信前端所有輸入的資料,一般來說前端做的防呆我後端會一樣判斷一次,垃圾進垃圾出。
mayyola iT邦研究生 1 級 ‧ 2018-10-08 08:42:12 檢舉
謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
Ryan Lee
iT邦新手 4 級 ‧ 2018-10-04 22:03:12
最佳解答

寫在前端的東西沒辦法阻止別人查看,
如果你想要的效果是: 輸入密碼 => 驗證正確 => 才能投票

我想了幾個方法

  1. 後端驗證,把頁面分為兩個,將投票頁面設為驗證後才能查看(ex: php 驗證是否有登入 session,沒有就跳轉)
  2. 一樣是後端驗證,但不阻止使用者自行顯示投票畫面,而是在後端(資料庫)接收投票資料時驗證此投票使否有效(ex: 是否帶上有效 token)
  3. 前端隱藏(不靠普),把投票的 html 程式碼寫在 js 中,然後把 js 程式碼 uglify(讓有心人無法馬上就把畫面弄出來),在輸入正確密碼後才透過 js 渲染到畫面上。
  4. 使用 js 禁止 F12(最不靠普)
看更多先前的回應...收起先前的回應...
mayyola iT邦研究生 1 級 ‧ 2018-10-04 22:19:07 檢舉

h大好:
1.有想過設為兩個網頁,第一個網頁是登入,密碼正確就跳轉第二個網頁,但是若直接猜得到第二個網頁還是可以投票是嗎?
2.第二個好像可以試試看,不過我沒用過,不知道怎麼寫
4.是我一開始想到的@@

Ryan Lee iT邦新手 4 級 ‧ 2018-10-04 22:23:13 檢舉

冒昧問一下您後端的架構(語言、資料庫)

Ryan Lee iT邦新手 4 級 ‧ 2018-10-04 22:28:13 檢舉

先回應您第一個問題,若用 php 寫,實務上可以檢查是否有登入(cookie、session),若沒有登入就會直接轉址
這是以前剛學 php 寫的(很醜)
http://180cm.esy.es/mystic/
帳號: admin
密碼: adminnn
只有登入後才能看到接下來的資料,但是登出後,就算直接查看登入後網址(http://180cm.esy.es/mystic/mysticSystem/),也會直接被轉回登入頁面

mayyola iT邦研究生 1 級 ‧ 2018-10-04 22:37:27 檢舉

h大您好:大概知道您的意思了~謝謝你

小魚 iT邦大師 1 級 ‧ 2018-10-05 01:06:46 檢舉

話說, 你用txt判斷喔?
可不可以直接下載下來?

froce iT邦大師 1 級 ‧ 2018-10-05 08:43:04 檢舉

會問第一個問題就表示你cookies和session沒學通。
反正在寫重要網站的基本守則就是前端不可相信,永遠要在後端做認證。

mayyola iT邦研究生 1 級 ‧ 2018-10-05 08:54:16 檢舉

可以下載下來..我寫完才想到 冏..請問那有可能用ajax傳到驗證的php
在同一個網頁登入跟進入畫面,不用跳轉到另一個網頁@ @

froce iT邦大師 1 級 ‧ 2018-10-05 16:44:48 檢舉

可以,用2和1都做得到。

mayyola iT邦研究生 1 級 ‧ 2018-10-05 16:54:34 檢舉

f大您好:
我用ajax把驗證密碼正確後的回傳值回傳,但要如何運用,比如如有回傳值計票畫面就被顯示出來,登入畫面就隱藏(用js的話是不是有容易被串改呢?)謝謝

froce iT邦大師 1 級 ‧ 2018-10-05 17:32:26 檢舉

驗證後用ajax傳回rendering後的html,再插入到相對應位置,這樣難度會比較高,只想傳回是否通過驗證的話就放棄防止畫面被修改的想法。
不過後端有做驗證,那被修改後重新整理就是原來的結果了,改前端只是自爽而已啊

mayyola iT邦研究生 1 級 ‧ 2018-10-08 08:42:04 檢舉

謝謝,因為我發現改前端後,不重新整理還是可以讓他計票

我要發表回答

立即登入回答