前言
- 今天与同事讨论了一个关于钓鱼网站的问题,目前巧思一个解决方式,记录下这个小机灵。
问题
- 由于公司目前较多中老年客户入坑区块链,他们对钓鱼网站的防范意识稍弱些。例如:官网是
http://www.laidawoyabendan.com,在一个挂白群中,钓鱼佬发出如http://www.laidawoyabenban.com的钓鱼网站。客户疏忽而进入网站,在钓鱼网站授权一定数量的代币给钓鱼佬后,所授权的代币也就直接空城了。
解决方式
-
根本的问题是域名可自选,相似的域名会让人疏于防范,从而被钓。
-
我们都知道,区块链具有不可篡改性。智能合约部署后,地址也就确定了,我们可以利用这个特性,将智能合约网址当做安全跳板。官网信息存储在智能合约中,给上
public修饰符(所有人都可以获取官网地址),仅发布者拥有修改权限。 -
客户只需存储
https://etherscan.io/address/0xB8c77482e45F1F44dE1745F52C74426C631bDD52并记忆前四位(0x后四位)的智能合约地址。因合约地址最终是由 HASH 函数得出的结果,而记忆前四位的钓鱼合约理论需碰撞 65536 次(16 ** 4),指数级增加钓鱼难度。当钓鱼佬发出如https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7的钓鱼合约时,客户只需核对合约地址前四位,即可防钓。 -
防呆不防傻!
代码实现
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract BD {
string public officialWebsite;
address public owner;
constructor() {
owner = msg.sender;
}
function setOfficialWebsite(string memory _os) public returns (bool) {
require(msg.sender == owner, "No permission"); // 只允许发布者修改
officialWebsite = _os;
return true;
}
}