npm 包 solium-plugin-security 使用教程

阅读时长 7 分钟读完

前言

代码安全是前端开发中必须考虑的问题之一,同时代码规范的遵循也是很重要的。在这种背景下,solium-plugin-security 这个 npm 包应运而生,它是一个基于 Solium 的静态分析工具,用于检查 Solidity 代码中的安全性问题和编码规范性问题。

本篇文章将详细介绍如何使用 solium-plugin-security 进行 Solidity 代码的检查,同时也会分享一些学习和指导意义。

安装

首先,我们需要安装 solium-plugin-security,可以通过以下命令来完成安装:

使用

安装完成后,在项目根目录创建 .soliumrc.json 文件,配置 solium-plugin-security 插件,示例如下:

-- -------------------- ---- -------
-
    ---------- -
        ----------- ----
    --
    ----------- -
        ------- -----
        ------------- -----
        ------------------- -----
        ----------------------- -----
        ---------------------- -----
        --------- -----
        ------------- ----
    -
-

在以上配置中,我们开启了 security 插件,并且启用了其中的一些规则,具体规则的含义如下:

规则名称 作用
name 检查合约名和方法名是否符合规范。
visibility 检查合约和函数的可见性是否正确。
state-visibility 检查合约状态变量的可见性是否正确。
state-modifier-order 根据修改器的定义顺序检查状态变量的修改是否正确。
function-visibility 检查功能的可见性是否正确。
unsafe 检查代码是否存在已知的漏洞和安全风险。
deprecated 检查代码是否包含已弃用的功能。

在配置完成的基础上,我们可以使用以下命令来运行 solium-plugin-security:

在以上命令中,'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

纠错
反馈