因此,HTML5在客户端为我们提供本地SQL数据库,如果您想编写选择或插入,您不再能够通过说$buddski = mysql_real_escape_string($tuddski)
来清理第三方输入,因为PHP解析器和MySQL桥很远。这是一个全新的SQLite世界,您可以在其中编写查询并使用JavaScript解析结果。
但是,虽然您可能没有将整个站点的数据库关闭,但是由于恶意注入攻击而导致其数据库损坏或被擦除的用户将会感到非常不安。
那么,在纯JavaScript中,最好的方法是逃避/清理您的输入,这样它们就不会对用户的内置数据库造成严重破坏?
小脚本?规格?任何人吗?
答案 0 :(得分:6)
一旦您将计算完全委托给客户,游戏就结束了。即使您的脚本是防弹的,用户仍然可以在本地加载自己的脚本(例如,参见GreaseMonkey) - 并自行访问客户端数据库,绕过脚本。
在我看来,客户端数据库与不受信任的客户端(也就是说,几乎任何客户端)唯一有用的应用是镜像/缓存主服务器端db的部分 - 这样客户端就不会必须通过重复请求在网络上提取数据(如果此类客户端数据库损坏,只需使其无效并再次从服务器加载数据)。
答案 1 :(得分:2)
我不确定HTML5和本地数据库,但在服务器端,最好使用预处理语句而不是转义。我相信客户端的数据库也是如此。
答案 2 :(得分:1)
答案 3 :(得分:0)
我认为,即使你对你的javascript上的输入进行消毒,也会让你的系统容易受到攻击。如果你在你的javascript上放置一个输入消毒剂并在你的php文件上放置另一个消毒剂,那也是多余的。
答案 4 :(得分:0)
使用Google的JavaScript Html Sanitizer作为Caja发行版的一部分: http://code.google.com/p/google-caja/
此库可以在客户端和服务器端使用。我在ASP JScript主机下运行库的经典ASP项目中使用服务器端。