SQL注入原理,在URI页面加参数查询数据库,如果程序没有严格过滤字符串,就有可能导致SQL注入


我们可以在前端Nginx过滤URI来防止SQL注入。配置如下
什么是URL和URI,举例说明:
连接  http://www.abc.com/upload.php
    URI: ?at=8
     URL一般指?号前面的URL地址,URI指?号后面的参数
注:discuz需将show和update关键字取消,否则无法登录,或获取验证码。

server {} 里加入以下内容:


if ($request_uri ~* (.*)(union%20|select%20|insert%20|delete%20|update%20|drop%20|show%20|truncate%20|alter%20|execute|'|\;|%5c%2e)(.*)$) {
        return 403;
}


curl 模拟访问

# curl "http://www.test.com/index.php?select * from db.user"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<h1>403 Forbidden</h1>
<p>You don't have permission to access the URL on this server.</body>
</html>


返回HTTP CODE 403