iT邦幫忙

1

php內文字串加密

php

想要做到一項加密,防止程式人員跟php檔案外流帳密
因為帳密必須寫在php內
$user = ['user'];
$pw = ['password'];

希望能把密碼字串加密 $pw = ['password'];加密成
$pw = ['efojfpw6gt6e48gt4e45r'];
然後還可以在php內正常執行,而且還無法被解密
有沒有什麼好方式可以辦到?

看更多先前的討論...收起先前的討論...
q00153 iT邦新手 4 級 ‧ 2018-06-29 15:39:04 檢舉
用 PHP 提供的密碼加密跟驗證函數就可以啦...
http://php.net/manual/en/function.password-hash.php
hsiang11 iT邦研究生 5 級 ‧ 2018-06-29 15:44:56 檢舉
q大 這篇有在看了
但是密碼可以直接套入hash後的字串值嗎?

define( 'password', "gf45sh4df4gd56g45er4h54erg");
hsiang11 iT邦研究生 5 級 ‧ 2018-06-29 15:59:48 檢舉
我的疑問是hash後的值 明顯就不是原本的密碼字串
那不會被系統拒絕 認為密碼不同嗎
你先說說你的使用情境出來吧。
完全搞不太清楚你這樣做的用意在哪。
資料庫只存password_hash()過的值,每次要比較,都是對使用者輸入的密碼先做一次password_hash()之後去跟資料庫中的值比較
q00153 iT邦新手 4 級 ‧ 2018-06-29 16:34:50 檢舉
記錄的是 hash 值,比對的也是使用者輸入之後轉成 hash 值的密碼,不是比對明碼,這樣的一個邏輯
1
浩瀚星空
iT邦新手 2 級 ‧ 2018-06-29 16:05:00
最佳解答

其實,只要不是需要外部來源key加密的做法。

文字加密是超沒意義且容易造成問題的做法。
因為你用想的就知道,加密的方式如果不用外部,
你怎麼寫在裏面都是可以解密的。

所以光「無法解密」這點就一定是辦不到的。
再來,無論如何的帳密。最終還是會交由某一個元件送帳密處理。

人家根本不會去管你那邊寫的怎麼樣。反正我拿最後的值就好了。
不一樣無解。

如上面kksugsay跟你說的。使用zend guard, ioncube這些客外的php掛件來幫你解析處理
反正key一定不在你的程式裏。人家怎麼樣都是無法解密的。

如果擔心php內的帳密會由你內部人員外流的話,一般來說這是無可防止的方式。
因為你不可能同一個開發團隊,不能讓他們知道帳密。
那做起事來綁手綁腳的。

如果不是因為這樣的話。如某開發的網站是給客戶用,但連結的是你們的資料庫或什麼的。
那你只能利用api的方式,或是額外建立新的帳密給他們使用。

不要去想將php文字加密的事啦,吃力不討好。

hsiang11 iT邦研究生 5 級 ‧ 2018-06-29 16:30:03 檢舉

有些道理 謝謝

2
kksugsay
iT邦新手 1 級 ‧ 2018-06-29 14:21:52

最好的方式就是使用php的加密程式,如:zend guard, ioncube
另一種免費方式就是用線上加密的工具,當然不保證絕對安全
http://www.phpjm.net/

hsiang11 iT邦研究生 5 級 ‧ 2018-06-29 14:30:36 檢舉

其實我只想加密密碼字串不要外流,把程式全部亂碼不是辦法阿

kksugsay iT邦新手 1 級 ‧ 2018-06-29 14:41:39 檢舉

只要把帳密獨立一支php後加密再include就可以了,不用整個專案都加密

kksugsay iT邦新手 1 級 ‧ 2018-06-29 16:19:45 檢舉

這是唯一的作法,沒有別的了~

1
黃彥儒
iT邦研究生 3 級 ‧ 2018-06-29 14:50:26

密碼請勿加密,請一定要使用雜湊(hash)
請參閱OWASP所提供的安全指南 https://www.owasp.org/index.php/Secure_Coding_Cheat_Sheet#Password_Storage

0
joedenkidd
iT邦見習生 0 級 ‧ 2018-06-29 16:38:33

比對 跟寫入 db 都用md5加密 ,這方式不知好不好

我要發表回答

立即登入回答