为了避免 SQL 注入攻击,我希望在将我的网站用户输入的所有文本(和大多数其他数据)发送到数据库进行存储之前对其进行清理。
我的印象是该函数在所有可能是恶意的字符( \n 、 ' 、 " 等)之前插入了反斜杠( \ ),并期望返回的字符串包含新添加的反斜杠。
我对包含此类潜在恶意字符的组成字符串进行了简单测试,并将其回显到文档中,完全符合我的预期:带有反斜杠的字符串转义了这些字符。
因此,我继续在数据中添加清理功能,然后再存储到数据库中。我将它 (mysqli_real_escape_string( $link , $string)) 插入到我为数据存储而构建的查询中。测试脚本时,我很惊讶(有点懊恼)注意到存储在数据库中的数据似乎不包含反斜杠。我测试,测试,测试,但都无济于事,我很茫然......
有什么建议么?我错过了什么吗?我期望然后必须使用 stripslashes($string) 函数删除反斜杠,但似乎没有任何东西可以剥离......