Php 我是否必须更改我所有的htmlspecialchars。。。mysql中的ENT\u引号\u真实\u转义\u字符串?
我想保护我的网站免受sql注入和其他可能的风险,因此我更改了所有sql查询,为每个变量添加如下内容:Php 我是否必须更改我所有的htmlspecialchars。。。mysql中的ENT\u引号\u真实\u转义\u字符串?,php,quotes,mysql-real-escape-string,htmlspecialchars,Php,Quotes,Mysql Real Escape String,Htmlspecialchars,我想保护我的网站免受sql注入和其他可能的风险,因此我更改了所有sql查询,为每个变量添加如下内容: $getLid = htmlspecialchars($_GET[lid], ENT_QUOTES); 对于我的50个文件。。。但我刚刚看到这可能是我的错误:我应该为任何“输入”添加mysql\u real\u escape\u字符串 在这种情况下,还是使用mysql\u real\u escape\u string更好,还是ENT\u QUOTES也有效?我是否需要重新启动并添加mysql
$getLid = htmlspecialchars($_GET[lid], ENT_QUOTES);
对于我的50个文件。。。但我刚刚看到这可能是我的错误:我应该为任何“输入”添加mysql\u real\u escape\u字符串
在这种情况下,还是使用mysql\u real\u escape\u string
更好,还是ENT\u QUOTES
也有效?我是否需要重新启动并添加mysql\u real\u escape\u string
而不是htmlspecialchars(…,ENT\u引号)代码>
编辑:
你的意思是这样的吗
$getLid = escape_string($str);
function escape_string($str){
return mysql_real_escape_string($str);
}
编辑编号2:返回语句不能正常工作,您知道原因吗
警告:mysql\u real\u escape\u string()[function.mysql real escape string]:无法在…www/escape\u file.php中建立到服务器的链接
拒绝用户访问…www/escape_file.php
谢谢有很多关于安全用户输入的参考资料。你可以用谷歌搜索它,但我认为你应该在另一个php文件(如“escape.php”)中编写一个类或函数,然后将该文件包含到所有50个文件中。然后用它逃跑。例如:
include 'escape.php';
$str = escape_string($str);
因此,只需更改一个文件,就可以轻松地更改转义函数。
我希望它能对您有所帮助。您的第一个错误是使用了ext/mysql。
请阅读上的“如何通过SQL注入确保数据库查询的安全性?”谢谢。@alexn:谢谢,关于我的问题还有其他想法吗?谢谢,您是指我的编辑中的内容吗?(我上面的帖子)是的。但是您应该将此代码写入另一个文件并包含它。然后您可以通过只更改一个文件来更改所有文件。argh。。。谢谢好的,ENT_引号不能以某种方式替换转义字符串?如果我没有选择,我会替换我所有的文件…它们用于完全不同的事情。htmlspecialchars()将特殊的HTML字符转换为实体,以便在输出时不会出现问题(或XSS风险),而mysql_real_escape_string()会转义敏感的SQL字符,因此可以执行插值查询,而不会出现SQL注入风险。请注意,mysql必须是有效的开放连接。这是必需的,因为转义取决于服务器使用的字符集。请看以下链接:-