是否存在代码来阻止url中的特殊字符?如果您尝试在网站的网址中添加特殊字符(例如:/;),则会将其转换为“%”。
这可以防止SLQ注入或某种注入,对吧?
我该怎么办?
此刻,我的网站只转换了撇号(')。
答案 0 :(得分:3)
这称为URL encoding,并不用于防止SQL注入或任何其他类型的攻击。您可以通过URL functions,特别是urlencode
在PHP中完成此操作。
但是,如果您不了解其中的含义或含义,我建议不要“盲目”这样做。
如果您有实际要解决的问题,则应ask about that problem and not your perceived solution。
答案 1 :(得分:3)
使用特殊代码替换对于URL无效的字符是urlencode函数。这与安全性无关。但是如果没有它,URL可能会无效,因此您将不会得到响应。
为避免SQL注入漏洞,请使用准备好的语句(取决于用于连接到数据库的库/扩展名,它可能是mysqli::prepare,pdo::prepare)或其他。检查文档文章中的示例。
答案 2 :(得分:2)
您所说的称为 URL encoding ,与SQL注入无关。 URL编码是为了避免与以下具有特殊含义的字符混淆:
! * ' ( ) ; : @ & = + $ , / ? # [ ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
这是由浏览器自动完成的,您不需要为用户在服务器端进行任何设置。但是,如果需要传递编码的字符串,可以使用 urlencode()
,如果需要查找使用的字符串,可以使用 urldecode()
成为。
为防止SQL注入,最重要的事情是使用准备好的语句。在程序化MySQLi中,这看起来像:
$stmt = $conn->prepare('SELECT * FROM table WHERE field = ?');
$stmt->bind_param('s', $variable);
$stmt->execute();
有关其他预防措施,建议您参考 this post 。