加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过Bash脚本转义MYSQL命令行

发布时间:2020-12-15 18:49:18 所属栏目:安全 来源:网络整理
导读:PHP有mysql_real_escape_string()来正确地转义任何可能导致问题的字符.什么是最好的模拟BASH功能的方法? 有没有办法使用bash准备好mysql语句?这似乎是最好的办法. 我的大多数变量不会(不应该)有特殊字符,但是我给用户完全自由的密码.它可以包括诸如“和”
PHP有mysql_real_escape_string()来正确地转义任何可能导致问题的字符.什么是最好的模拟BASH功能的方法?

有没有办法使用bash准备好mysql语句?这似乎是最好的办法.

我的大多数变量不会(不应该)有特殊字符,但是我给用户完全自由的密码.它可以包括诸如“和”的字符.

我可能正在做多个SQL语句,所以我想制作一个接受参数的脚本,然后运行该语句.这是我到目前为止

doSQL.sh:

#!/bin/sh

SQLUSER="root"
SQLPASS="passwor339c"
SQLHOST="localhost"

SQL="$1"
SQLDB="$2"


if [ -z "$SQL" ]; then echo "ERROR: SQL not defined"; exit 1; fi
if [ -z "$SQLDB" ]; then SQLDB="records"; fi

echo "$SQL" | mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB

和使用所述命令的示例:

example.sh:

PASSWORD=$1
doSQL "INSERT INTO active_records (password) VALUES ('$PASSWORD')"

显然,如果密码密码中包含一个单引号,这将会失败.

在Bash中,printf可以为您执行转义:
$a=''''";:#[]{}()|&^$@!?,.<>abc123'
$printf -v var "%q" "$a"
$echo "$var"
'";:#[]{}()|&;^$@!?, .&;&;abc123

我会把它留给你来决定是否足够强大.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读