我想知道这是否可靠。在我的PHP文件中,我执行以下代码:
if(strpos($text,"'") === false) {
//perform query
} else { /*illegal character*/ }
我知道我可能听起来像个白痴,但这有什么缺陷?有人可以使用不同的字符编码来绕过它并注入单引号吗?
如果要阻止SQL注入 - 请遵循以下指南:How can I prevent SQL injection in PHP?
试图实施自己的自定义措施只会以泪流满面。
并且为了记录 - 您的代码不会阻止SQL注入。例如
105; DROP TABLE Suppliers
会通过
不,这不对。注射可以使用'
,"
,;
和任意数量的其他角色。例如,如果使用错误的文本编码,则可以使用某些Unicode字符来终止字符串。正如@TheShiftExchange指出的那样,你的代码将通过DROP TABLES
命令,它可能导致各种其他注入。