我只想问一个关于PHP中$ _GET参数的快速问题以及它们的安全性。虽然我的get参数没有显示,但它在我的网址中。我只是想知道是否有任何额外的步骤可以让它更安全?
我有一个$ _GET变量命名页面,它决定了它们的页面,并且它有一个reqrite规则来检查斜杠后的第一个单词
我知道你应该使用mysql_real_escape_string
但现在已弃用,将来会删除吗?并更新方式..
示例:http://example.com/pagehere
将以... http://example.com/index.php?page=pagehere
传递location / {
rewrite ^/(|/)$ /index.php?page=$1;
rewrite ^/([a-zA-Z0-9_-]+)(|/)$ /index.php?page=$1;
rewrite ^/(.*)\.htm$ /$1.php;
}
答案 0 :(得分:1)
请记住,来自用户端的任何传入数据都不安全,所以总是采取必要的步骤以确保它不会导致系统出现任何问题,就数据库查询而言,总是使用PHP使用Prepared语句执行数据库相关任务的PDO类将使任何SQL注入攻击无效,请在此处阅读有关预准备语句的更多信息 - http://php.net/manual/en/pdo.prepared-statements.php
如果正确处理,使用GET变量不是问题,当您从$ _GET读取数据时,可以使用htmlspecialchars()来清除任何恶意代码的数据。这里有一些有用的信息 - https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
有关如何使用PDO防止SQL注入的更多信息 - How can I prevent SQL injection in PHP?
答案 1 :(得分:0)
将使用的参数是什么?您应该使用过滤器输入功能。如果它将用于查询数据库,也可以使用预准备语句。请参阅http://php.net/manual/en/function.filter-input.php和http://php.net/manual/en/pdo.prepared-statements.php。基本上你需要清理查询字符串,否则你会为可能的漏洞(服务器端包含攻击,sql注入等)打开门。