我只是想知道,我的应用程序需要尽可能快,并且变量已经转换为int,所以如果可以避免的话,我不想转义字符串。
示例如下:
$var1 = (int)$_POST['number1'] //User input;
mysql_query("INSERT INTO ... $var1 ..");这在任何情况下都是安全的,还是我也应该mysql_real_escape_string $var1?
有时我也会md5() vars而不是转义它们,但我想这没问题。
发布于 2012-10-14 23:48:24
是的,这将是安全的,但需要注意的是,任何不是有效整数的值都将被强制转换为0,这可能会导致副作用。
正如minitech所说,使用准备好的语句确实应该是一种方式,因为你将不再需要担心这一点。
然而,更重要的是,性能在这里并不是一个真正的问题,也不值得考虑。无论您转义还是不转义字符串,都不会对应用程序的性能产生任何影响(至少如果它不是兆字节大小的话)。过早的优化通常是浪费时间--这样的“优化”只会使代码更难阅读和理解,从长远来看,这要重要得多。
发布于 2012-10-14 23:49:32
正如minitech所说,好的做法是确保你也检查它是一个整数。使用预准备语句真的会更安全,不过,我最近开始使用PDO,不会再回去了。
发布于 2012-10-14 23:49:06
这是安全的,但请记住,任何字符串都会转换为0,而不是null或类似的值。
https://stackoverflow.com/questions/12883811
复制相似问题