是否应该为了缓冲区溢出而验证输入(对于MySQL选择)?

时间:2014-06-19 16:35:49

标签: mysql validation buffer-overflow

假设程序将此语句发送到mysql服务器:SELECT * FROM tbl_name WHERE column_name = ?,我是否应该验证将传递给占位符的输入只是为了可能的缓冲区溢出而忽略了mysql在其代码中可能存在的漏洞? Here is a very old buffer overlow for select。在mysql 5+中也有一些可利用的缓冲区溢出漏洞,但我想其中大部分是固定的。无论如何应该只是为了缓冲区溢出来检查输入大小(或允许任何大小时的格式)?

P.S。应用程序的堆栈/管道中有许多元素/级别,您无法控制它们(在您控制输入之前和之后)。缓冲区溢出验证是否过度杀伤?

1 个答案:

答案 0 :(得分:0)

这取决于此输入的来源。如果它来自外部源,您无法控制(例如,输入被输入到Web表单中),您绝对应该验证它并且只接受可能实际出现在column_name列中的值。

如果您接受可能永远不会出现在该列中的值(由于无效字符,无效长度等等),将值传递给MySQL将浪费资源。您可以在源处停止它,并要求输入有效。因此,无论潜在的安全问题(例如缓冲区溢出),验证输入都是一个好主意。