【问题标题】:where to sanatize data client side or server side在哪里清理数据客户端或服务器端
【发布时间】:2014-02-20 05:23:44
【问题描述】:

我正在创建一个社交网站并且遇到了一个问题....例如-当用户在状态上发布某些内容或 cmets 时,我应该在哪里清理数据,例如将 tagged friendshastags 分开等等...遇到twitters [(twitter-text-js)][1]...我可能会更加困惑,因为它会清理客户端的内容,然后将其发送到后端... 如果你们中的一些人能对此有所了解,那就太好了。在此先感谢

【问题讨论】:

  • 为什么不两者兼而有之?不过,我会说后端是绝对必须的。
  • 您应该包括对用户输入的客户端验证,但是由于其中许多方法可以被规避,您应该始终在后端清理用户输入。
  • github.com/twitter/twitter-text-js twitter-text-js 似乎没有太多用于清理。
  • 如果陌生人使用系统,你需要使用服务器端的清洁。

标签: javascript php jquery json twitter


【解决方案1】:

数据清理必须在服务器端进行。您在客户端所做的一切都可以被绕过(例如,如果您使用 javascript -> 攻击者只会禁用 javascript。)

出于可用性原因,您可以另外在客户端实现它。

【讨论】:

  • 那么为什么 twitter 使用这个 text-js 来做
  • 服务器上的更换次数越少,处理负载就越轻,为什么不让 99.99% 的合法客户免费为他们这样做呢?当你有这么多流量时,像这样的小东西加起来比许多网站消耗的节省更多。如果您知道推文将如何发布,它还允许实时预览和类似的东西......
  • 这不是真的。现代 webapps 在禁用 javascript(facebook、gmail 和无数其他)的情况下将完全无法工作,因此,虽然我同意应该在服务器端进行卫生处理,但仍然值得失败-客户端上的安全解决方案也不会造成伤害。
【解决方案2】:

始终在服务器端验证和清理数据,即使您在客户端这样做也是如此。在显示数据库中的数据时,使用 htmlentities() 和/或 htmlspecialchars() 之类的东西来清理数据也很重要。

学习使用 PDO 准备语句将数据插入数据库,因为您无需担心事先清理数据。

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

【讨论】:

    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多