问题描述
|
我正在将PHP 5与sqlite 3类一起使用,并且想知道将PHP内置数据过滤功能与标志FILTER_SANITIZE_STRING配合使用是否足以阻止sql注入和XSS攻击。
我知道我可以去抓一个大型的丑陋的PHP类来过滤所有内容,但是我想保持代码尽可能整洁和简短。
请指教。
解决方法
SQLite3
类允许您准备语句并将值绑定到它们。那将是您数据库查询的正确工具。
至于XSS,那与您使用SQLite完全无关。
, 对XSS和SQLI使用相同的清理功能从来都不是明智之举。对于XSS,可以在输出到HTML之前使用htmlentities过滤用户输入。对于SQLite上的SQLI,可以在使用SQLite构造SQL查询之前,使用准备好的语句(更好)或使用escapeString过滤用户输入。
, 我认为它足以保护您的字符串数据输入,但是您可以选择许多其他选项。例如其他库会增加您的应用程序处理时间,但会帮助您处理/解析其他类型的数据。
, 如果您只是想构建一个简单的表单,并且不想引入任何繁重甚至轻巧的框架,请使用php过滤器+并将PDO用于数据库。这将保护您免受跨站点请求伪造之外的所有攻击。
, 如果您对自己对安全性问题的理解不够信任,不足以提出这个问题,那么您如何信任这里的某个人给您一个很好的答案?
如果您迟早要删除不想要的字符,那么您将要删除用户想要键入的字符。最好针对使用数据的特定上下文进行编码。
签出OWASP ESAPI,它包含许多编码功能。如果您不想占用那么大的库,请查看函数的功能并将相关部分复制到代码库中。