如何在没有mysql的情况下清理php输入

如何在没有mysql的情况下清理php输入,php,sqlite2,Php,Sqlite2,我正试图找出一种方法来清理从php进入sqlite的输入。我不能使用mysql。仅仅使用sqlite\u escape\u字符串就足够了,还是我还需要做其他事情?此外,我只能使用sqlite2。有很多方法,但这取决于输入的目标,请参考此问题以更好地理解它:应该完成输入字符串所需的所有消毒。至于输出它,如果它被输出到HTML中,那么在输出它之前使用它。SQLite提供了这一功能。不过,它仅适用于PHP5 然而,仅仅依靠这些方法并不能使你免于注射。一个必要的措施是始终首先验证用户提供的输入,在使用方

我正试图找出一种方法来清理从php进入sqlite的输入。我不能使用mysql。仅仅使用sqlite\u escape\u字符串就足够了,还是我还需要做其他事情?此外,我只能使用sqlite2。

有很多方法,但这取决于输入的目标,请参考此问题以更好地理解它:

应该完成输入字符串所需的所有消毒。至于输出它,如果它被输出到HTML中,那么在输出它之前使用它。

SQLite提供了这一功能。不过,它仅适用于PHP5


然而,仅仅依靠这些方法并不能使你免于注射。一个必要的措施是始终首先验证用户提供的输入,在使用方法之前,您必须依赖-但实际上还没有编写过。

避免SQL注入的最佳方法是强制使用参数查询,而且永远不要通过字符串串联或变量插值来手动组装SQL语句


在PHP5+上,您可以使用PDO,这是一个支持(除其他外)SQLite和参数查询的多数据库抽象层。

转义函数确保转义SQL方言使用的特殊字符(主要是引号),以便插入/更新等工作。sqlite_escape_字符串所做的一切都是转义单引号

还有一个重要的问题是,有人可以设计一个SQL注入。因为您使用的是v2,所以不能使用prepare和_bind()函数来保护您

SQLite允许您链接以“;”分隔的命令所以这里有一个问题。我建议您从使用您编写的助手函数或使用sprintf仔细设计参数开始,并确保正确键入int、float和字符串

你应该能够创建自己的转义函数来“转义”你想要注意的事情。。。最特别的是分号,使用。。。假设使用反斜杠作为转义字符,则在查询结束时转义“\”

然后你会遇到有人故意插入恶意内容(XSS)的问题。Grigor提供了一种解决方案——在字符串上使用htmlentities()