Php 对于非常基本的降价,这些正则表达式可以工作吗?
关于正则表达式的一个简单问题:这段代码对我需要做的任何修饰都有效吗?(即,能否将其输入数据库并确保安全?)Php 对于非常基本的降价,这些正则表达式可以工作吗?,php,mysql,regex,code-injection,Php,Mysql,Regex,Code Injection,关于正则表达式的一个简单问题:这段代码对我需要做的任何修饰都有效吗?(即,能否将其输入数据库并确保安全?) 函数markdown2html($text){ $text=htmlspecialchars($text,ENT_引号,'UTF-8'); //强烈强调 $text=preg_replace('/.+?)\u_/s','$1',$text); $text=preg\u replace('/\*\*(.+?)\*\*\*/s','$1',$text); //下划线 $text=preg_re
函数markdown2html($text){
$text=htmlspecialchars($text,ENT_引号,'UTF-8');
//强烈强调
$text=preg_replace('/.+?)\u_/s','$1',$text);
$text=preg\u replace('/\*\*(.+?)\*\*\*/s','$1',$text);
//下划线
$text=preg_replace(“/”([^]+)/”,“$1
”,$text);
//斜体
$text=preg\u replace('/\*([^\*]+)\*/','$1',$text);
//Windows到Unix
$text=str_replace('\r\n','\n',$text);
//Macintosh到Unix
$text=str_replace('\r','\n',$text);
//段落
$text=''.str\u replace(“\n\n”,”',$text)。“”;
$text=str_replace(“\n”,”
,$text);
//[链接文本](Url)
$text=preg\u replace('/\[([^\]]+)]\([a-z0-9.\:\/?\\@!$&'()*+,;=%]+)\)/i','','','',$text);
返回$text;
}
否,数据通过该功能后无法保证安全
您需要转义sql敏感字符或使用PDO/Mysqli。无论如何,预先准备好的语句要方便得多
不要使用老方法将查询拼凑在一起,即:
$query = 'select * from table where col = '.$value;
你只是在自找麻烦。不,绝对不是
您的代码与SQL无关——它根本不修改'
或\
字符。将此函数的格式化功能与SQL转义混合在一起是愚蠢的
在某些情况下,您的代码也可能引入HTML注入——我特别怀疑URL链接正则表达式。如果没有合适的解析器,我一点也不相信它。我突然想到了两件事: 我相信前两个正则表达式(
'/\uuu(+?)\ uuuuuu/s'
和对应的*
)不正确地处理了单词和***单词***–它们将第三个字符视为单词的一部分,因此您将得到*单词*(其中第一个*是粗体,后面一个不是)而不是单词
关于第三个(“/”([^\u]+)\ u/”
),它真的适合于
不要那样做
变成
不要那样做
?
当然,我不是说如果你解决了这些问题,就可以使用它。你为什么不。。。在测试中尝试它,只是想知道它是否会停止SQL注入。为什么考虑注入?您是否使用了过时的mysql库?@James这对SQL注入没有影响。如果你想得到更好的保护,一定要使用PDO。我强烈建议你将Markdown放到数据库中,并在退出时解析它。然后您可以更改降价实现。此外-如果用户想要编辑他们的帖子怎么办?
$query = 'select * from table where col = '.$value;