Php mysql\u real\u escape\u string()对于mysql REGEXP是否足够?

Php mysql\u real\u escape\u string()对于mysql REGEXP是否足够?,php,mysql,regex,mysql-real-escape-string,Php,Mysql,Regex,Mysql Real Escape String,是否可以选择以下代码中的$user_input使MySQL查询的行为不符合预期 <? $regexp = mysql_real_escape_string( $user_input ); mysql_query( "SELECT col FROM table WHERE col REGEXP \"$regexp\"" ); ?> 我不能使用预先准备好的语句,因为需要稍微传递SQL字符串 编辑:我要补充一点,我已经知道正则表达式DoS攻击。此查询: mysql_query("SELE

是否可以选择以下代码中的$user_input使MySQL查询的行为不符合预期

<?
$regexp = mysql_real_escape_string( $user_input );
mysql_query( "SELECT col FROM table WHERE col REGEXP \"$regexp\"" );
?>
我不能使用预先准备好的语句,因为需要稍微传递SQL字符串

编辑:我要补充一点,我已经知道正则表达式DoS攻击。

此查询:

mysql_query("SELECT col FROM table WHERE col REGEXP '$regexp'");
不能被subversion来做SELECT以外的事情,我用single替换了双引号,因为double是一个仅限mysql的扩展

但是,如果ReXEP本身不在您的直接控件中,用户可以用它来选择任何东西-您应该考虑这是一个问题的可能性。

< P>此查询:

mysql_query("SELECT col FROM table WHERE col REGEXP '$regexp'");
不能被subversion来做SELECT以外的事情,我用single替换了双引号,因为double是一个仅限mysql的扩展


但是,如果ReXEP本身不在你的直接控制中,用户可以用它来选择任何东西-你应该考虑这是一个问题的可能性。

< P>不,除了ReGEX之外,你在那里是安全的,当然可以。< /P> 但是,如果您传递$link_标识符,您将更加高效和安全,因为PHP必须了解有关数据库的信息,以便正确地转义编码。 所以这个函数并不是简单地对字符串进行转义,而是询问mysql如何正确地进行转义


因此,传递链接标识符可以确保您的字符串正确地转义到它要用于的数据库。

不,您在那里是安全的,除了正则表达式,它当然可以是任何东西

但是,如果您传递$link_标识符,您将更加高效和安全,因为PHP必须了解有关数据库的信息,以便正确地转义编码。 所以这个函数并不是简单地对字符串进行转义,而是询问mysql如何正确地进行转义


因此,传递链接标识符可以确保您的字符串正确地转义到它要用于的数据库。

为什么传递链接标识符会更高效、更安全?我不知道为什么传递链接标识符会更高效、更安全?我没有否决“%needle”将不使用索引,因为%位于起始位置。因此这可能会很慢。“%Pineder”不会使用索引,因为%位于开始位置。所以这可能会很慢。