前言
代码安全是前端开发中必须考虑的问题之一,同时代码规范的遵循也是很重要的。在这种背景下,solium-plugin-security 这个 npm 包应运而生,它是一个基于 Solium 的静态分析工具,用于检查 Solidity 代码中的安全性问题和编码规范性问题。
本篇文章将详细介绍如何使用 solium-plugin-security 进行 Solidity 代码的检查,同时也会分享一些学习和指导意义。
安装
首先,我们需要安装 solium-plugin-security,可以通过以下命令来完成安装:
npm install --save-dev solium-plugin-security
使用
安装完成后,在项目根目录创建 .soliumrc.json 文件,配置 solium-plugin-security 插件,示例如下:
-- -------------------- ---- ------- - ---------- - ----------- ---- -- ----------- - ------- ----- ------------- ----- ------------------- ----- ----------------------- ----- ---------------------- ----- --------- ----- ------------- ---- - -
在以上配置中,我们开启了 security 插件,并且启用了其中的一些规则,具体规则的含义如下:
规则名称 | 作用 |
---|---|
name | 检查合约名和方法名是否符合规范。 |
visibility | 检查合约和函数的可见性是否正确。 |
state-visibility | 检查合约状态变量的可见性是否正确。 |
state-modifier-order | 根据修改器的定义顺序检查状态变量的修改是否正确。 |
function-visibility | 检查功能的可见性是否正确。 |
unsafe | 检查代码是否存在已知的漏洞和安全风险。 |
deprecated | 检查代码是否包含已弃用的功能。 |
在配置完成的基础上,我们可以使用以下命令来运行 solium-plugin-security:
solium -d contracts/ -c .soliumrc.json --fix
在以上命令中,'contracts/'指定了 Solidity 文件所在的目录,'.soliumrc.json'指定了检查规则,'--fix'指定了对代码中的问题进行修复。
示例
下面,我们提供一个简单的合约示例,展示如何使用 solium-plugin-security 进行代码检查:
-- -------------------- ---- ------- ------ -------- ------- -------- ---- - ---- ------- -------- --- - --- --- - ---- ----- - ---- -------- -- ---- -- --- --- -------- -- -------- -------- -- ---- -- ------ ---- ------- ------ - ------ - - -- - --- - ---- ----------- - ---- -------- -- ---- -- -------- --- -------- - ----------------- - --- ------ -- --- ----------- -- ------ -- --- ------ -------- -------- ----- -- -------- -- -------- -------- -- ---- -- ------ ---- ------- ------ - ---- ------ - - - -- ------ ------- - -------- ---------- -- - --------- -- ---- ---- --------- ---- -- ----- -- ------ -- - --- - ---- --------------------- - ---- -------- -- ---- -- -------- --- -------- - -------------------- - ---- -------- -- ------ --- ---- --- -- ------ -- --- ------- ---- --- ------- ----------- - ------- - ---- -------- --- - ------ -------- -------------- -- -------- -------- -- ---- -- ------ ---- -------- ------------- ------ ------- ------ - ------ ------ ---- - --- ----------- --- ----- - - -- - - ----------- - -- ---- - ------- - -- - ------ - - -- - -------- -------------- -- ---- -- -------- ---- ------- ------ - --------- -- -- ---- ------- ------ -- -------- ------ - - - - -- - --- - ---- ----------- - ---- -------- -- ---- -- ------ --- -------- -- -------- -------- -- ---- -- ------ ---- ------- ------ - ------ - - -- - - --- - ---- ----- - ---- -------- -- ---- -- -------- - ----- -- -------- ------------- - -------- --------------------- -------- ---- ------- --------- -------- -------------------- -------- ---- ------- --------- -
对以上合约进行检查,solium-plugin-security 分别发现了如下问题:
- #name:'function add' should have a name that follows the pattern 'camelcase'.
- #visibility:'function sub' should have its visibility set to 'external'.
- #state-visibility:The visibility of state variable 'NUM' should be set to 'public'.
- #state-modifier-order:Modifier 'isNum' should be the first modifier in the list of modifiers.
- #function-visibility:'function mul' should have its visibility set to 'public'.
- #unsafe:Buffer overflows have been detected in 'function mul'.
- #deprecated:'function div' is a deprecated function.
如果在运行检查命令时指定了'--fix'选项,那么以上问题均会被自动修复。
总结
solium-plugin-security 是一个能够帮助 Solidity 开发者检查代码中安全性和编码规范的工具。通过本篇文章的介绍,我们了解了 solium-plugin-security 的安装和使用,并举例说明了其检测效果。同时,本文也提醒 Solidity 开发者,编写安全的 Solidity 代码并不简单,需要阅读相关资料和合约漏洞实例,积累经验和技能,不断完善自己的技术能力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedac3db5cbfe1ea06109a0