- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
准备好的语句不允许参数化表名。为了确保无法插入任何代码,我想使用 ctype_alnum 来验证进入数据库模块的所有表名(删除下划线后),以保护应用程序免受其他部分错误的影响。
function insert($table) {
if(!ctype_alnum(str_replace("_", "", $table)))
throw new Exception("Invalid table name");
$sql = "INSERT INTO $table VALUES value=:value";
#... prepare and execute
}
是否存在这不足以抵御的攻击?我在想例如multibyte character exploits
最佳答案
我不知道在这种情况下会发生什么攻击,但我不会像你那样做,因为 $table
也可以包含可能不存在的表。
你应该有你接受的 $tables
的白名单,所以我宁愿这样做:
function insert($table)
{
$table = trim($table);
if (!ctype_alnum(str_replace("_", "", $table))
|| !in_array($table, $this->tables)
) {
throw new Exception("Invalid table name");
}
$sql = "INSERT INTO $table VALUES value=:value";
echo $sql;
#... prepare and execute
}
它将确保您的代码安全,如果有人拼错了表名,您甚至不会尝试执行代码。事实上,在这种情况下,您可以在检查值是否存在于白名单数组中时从条件中删除 ctype_alnum
。
关于php - ctype_alnum 对抗 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747875/
PHP 函数 CTYPE_ALNUM 有这个奇怪的问题 如果我这样做: PHP: $words="àòè"; if(ctype_alnum($words)){ Echo "Don't work"
如何在使用 ctype_alnum() 时将 _ 和 - 的异常(exception)添加为有效字符? ? 我有以下代码: if ( ctype_alnum ($username) ) { ret
准备好的语句不允许参数化表名。为了确保无法插入任何代码,我想使用 ctype_alnum 来验证进入数据库模块的所有表名(删除下划线后),以保护应用程序免受其他部分错误的影响。 function in
如何修复此错误: Fatal error: Call to undefined function ctype_alnum() in /Applications/AMPPS/www/farhom.com
我是一名优秀的程序员,十分优秀!