通过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 我会把它留给你来决定是否足够强大. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |