From 08833b08a0018cecf5f08de993683fa81d70c9e7 Mon Sep 17 00:00:00 2001 From: nymkappa Date: Wed, 31 Aug 2022 08:53:21 +0200 Subject: [PATCH] Fix possible mysql injectin in channels.api --- backend/src/api/explorer/channels.api.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/src/api/explorer/channels.api.ts b/backend/src/api/explorer/channels.api.ts index b5eac7499..3abdbd7c6 100644 --- a/backend/src/api/explorer/channels.api.ts +++ b/backend/src/api/explorer/channels.api.ts @@ -229,9 +229,14 @@ class ChannelsApi { public async $getChannelsByTransactionId(transactionIds: string[]): Promise { try { - transactionIds = transactionIds.map((id) => '\'' + id + '\''); - const query = `SELECT n1.alias AS alias_left, n2.alias AS alias_right, channels.* FROM channels LEFT JOIN nodes AS n1 ON n1.public_key = channels.node1_public_key LEFT JOIN nodes AS n2 ON n2.public_key = channels.node2_public_key WHERE channels.transaction_id IN (${transactionIds.join(', ')}) OR channels.closing_transaction_id IN (${transactionIds.join(', ')})`; - const [rows]: any = await DB.query(query); + const query = ` + SELECT n1.alias AS alias_left, n2.alias AS alias_right, channels.* + FROM channels + LEFT JOIN nodes AS n1 ON n1.public_key = channels.node1_public_key + LEFT JOIN nodes AS n2 ON n2.public_key = channels.node2_public_key + WHERE channels.transaction_id IN ? OR channels.closing_transaction_id IN ? + `; + const [rows]: any = await DB.query(query, [[transactionIds], [transactionIds]]); const channels = rows.map((row) => this.convertChannel(row)); return channels; } catch (e) {