为什么我们需要特定于数据库的函数,如mysql_real_escape_string()?它能做什么,addslashes()不是吗?
暂时忽略参数化查询的优越替代方案,是一个使用addslashes()的webapp,它仍然容易受到SQL注入的攻击,如果是,如何?
我有一系列正则表达式,包括我需要存储在mysql表中的转义字符.
如果我没有逃避反斜杠,就会被淘汰.
我尝试使用mysql_real_escape_string,addslashes,str_replace以及每次数据库存储双反斜杠而不是单个反斜杠时,在PHP中转义反斜杠.
我也尝试在bash中使用sed来逃避反斜杠,但它也打印2.
例:
$regex = "stackoverflow\.com\/questions\/ask";
$query_text = addslashes($regex);
$query = "INSERT INTO my_table (url) VALUES ('$query_text')";
Run Code Online (Sandbox Code Playgroud)
me@server:$ echo "select * from my_table" | mysql -uuser -Ddatabase -p'password'
stackoverflow\\.com\\/questions\\ask
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?