¿Qué pasa con el desarrollo? (17) Problemas de seguridad del código del minijuego WeChat, cómo evitar que el código sea pirateado

Lo que escribí anteriormente
se ha vuelto popular recientemente, pero al día siguiente se lanzó un juego del mismo tipo, lo que refleja el problema del robo del código del mini juego.

Antes de comenzar oficialmente el contenido de hoy, todos deben tener claro que si el código front-end se implementa en el servidor o la revisión de WeChat se conecta en línea, cuando el usuario accede a él, todo el código se ha descargado a la computadora del usuario y el código es analizado a través del navegador, los usuarios pueden ver el contenido correspondiente, todos los códigos front-end no deben ser robados en absoluto, es imposible evitar al 100% evitar errores cuando escribimos programas.

Y lo que quiero compartir hoy es cómo evitar el robo de código tanto como sea posible, desde el cifrado del contenido de la interfaz en segundo plano hasta la confusión de js en el front-end, y reducir la legibilidad del código tanto como sea posible.

lencería

  • Cifrado de nivel de interfaz de servicio en segundo plano
  • Cifrado del código online del mini juego

Tomando php como ejemplo en segundo plano,
ciframos el contenido de los datos cuando se emite la interfaz

/**
 * 输出内容到前端
 * @param $status
 * @param $message
 * @param $data
 * @return void
 */
function show($status, $message = '操作成功', $data = array())
{
    
    
    $result = array(
        'responseCode' => $status,
        'responseMessage' => $message,
        'data' => strencode2(json_encode($data)),
    );
    exit(json_encode($result));
}

/**
 * 加密方法
 * @param $string 加密内容
 * @return string
 */
function strencode2($string)
{
    
    
    $string = base64_encode($string);
    $key = md5('******');
    $len = strlen($key);
    $code = '';
    for ($i = 0; $i < strlen($string); $i++) {
    
    
        $k = $i % $len;
        $code .= $string [$i] ^ $key [$k];
    }
    return base64_encode($code);
}

Para el front-end, tome js puro como ejemplo para escribir un pseudocódigo. La idea es juzgar primero el código de respuesta devuelto en la interfaz y luego descifrar la visualización de datos devueltos.

// response 为 后台返回的数据
  if (response.data.responseCode != 0) {
    
    
                    Toast(response.data.responseMessage)
                }
                response.data.data = JSON.parse(strencode(response.data.data));
                console.log(response.data.data, '解析');
//解密函数
function strencode(string) {
    
    
    let key = md5("******");
    string = Base64.decode(string);
    let len = key.length;
    let code = '';
    for (let i = 0; i < string.length; i++) {
    
    
        let k = i % len;
        code += String.fromCharCode(string.charCodeAt(i) ^ key.charCodeAt(k));
    }
    return Base64.decode(code);
}

El cifrado de la interfaz puede aumentar en gran medida el factor de seguridad. En el depurador del minijuego WeChat, no hay forma de F12 para ver los recursos de imagen. Todos los recursos de imagen se pueden colocar en el servidor oss, y otros ni siquiera pueden recoger los recursos de imagen. .

La capa de la interfaz está terminada, echemos un vistazo al front-end js. Node instala javascript-obfuscator para cifrar el js en el directorio del proyecto. En el artículo anterior sobre desarrollo (13), le robaron el código del applet de WeChat y lo colocaron en el estantería, cómo garantizar la seguridad del código se ha explicado en detalle, y también es aplicable a los archivos js en los minijuegos de WeChat, puede ir y echar un vistazo.

Supongo que te gusta

Origin blog.csdn.net/zw21544182/article/details/126995491
Recomendado
Clasificación