使用MDB2防止PHP中的SQL注入攻击

3
我正在尝试弥补SQL注入漏洞,我编写了这个基本函数:function。
antiInjectie($inputfromform){
    $temp = str_replace("'", "`",$inputfromform);
    $temp = str_replace("--", "~~",$temp);
    return htmlentitites($temp);
}

然而,有人告诉我也要考虑十六进制值,但是我该怎么做呢?

更新 我被MDB2和pgsql卡住了。


https://dev59.com/oHVD5IYBdhLWcg3wL4cA - Jacob
不幸的是,我被困在MDB2中 :( - Lucas Kauffman
如果你不打算使用PDO,请查看你正在使用的连接类型的DB函数。它们通常已经包装了转义函数。 - afuzzyllama
4个回答

6

Bobby-Tables提供了一个很好的防止SQL注入攻击的指南。

简而言之:不要自己处理输入,使用数据库API方法来允许绑定参数。


1
Bobby Tables不是一个“好链接”。 - Darth Egregious
展示问题为何是问题的引人入胜的例子?有了。提供如何处理该问题的多种语言解释?有了。邀请提供改进或报告问题?有了。看起来非常不错。 - Quentin

2

2
使用pg_query_params()函数,它是PHP和PostgreSQL中避免SQL注入最简单的方法。请注意保留HTML标签。

1
首先,不要自己编写任何逃避函数。它们很可能会出现问题,而数据库库很可能已经包含了适当的函数。对于mysql,您可以使用mysql_real_escape_string
然而,更好的长期解决方案是不要将完整查询作为文本创建,而是使用准备好的查询并在执行过程中传递值。对于mysql,请检查mysqli扩展。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接