你应该在服务器端进行验证,还是只在客户端进行验证?
@TheTXI
我很高兴你的惊讶我只是不想留下任何可能改变某人回答给我错误信息的东西.
似乎有很多人触及我的目标,但Ajax的部分应该保留在我的问题中,因为这是最重要的部分.
然而阅读我知道的帖子看到一个坏人可以轻松加载firebug并将我的按钮更改为提交按钮并发帖.或者其他一些方式.
浏览器/客户端验证是一种便利.你不能依赖它.您绝对需要使用服务器端验证复制任何客户端级别的验证.
好吧,很好,你的所有代码都是正确的.当黑客用他们喜欢的一个替换你的javascript时,或者只是简单地提交POST和GET,就好像它是你的代码一样,会发生什么?
在客户端验证是一个可用性问题.
在USAGE点验证是一个安全问题.
最后一点很重要,因为如果您在使用时没有进行验证,那么您的代码就会高度耦合.如果你更改了一个模块,它会在其他地方破坏它,因为你在错误的点上进行了验证.
例如,在存储到SQL数据库之前,您可以根据SQL注入验证数据 - 如果您选择一个好的数据库,库将为您执行此操作.当您将数据显示为HTML时,可以根据CSS验证数据.但是如果您将数据公开为XML,RSS或JSON,那么验证就不同了 - 如果您仅在输入时验证它,则不会阻止对其他格式的攻击,并且您的输入例程将与输出相关联您选择的格式.
我一直认为它是
客户端验证是为了可用性
服务器验证是为了安全.
是的,您应该始终进行服务器端验证.Javascript/AJAX很高兴为用户提供即时反馈,但它并没有在服务器端为您提供任何保护.
你只是不能相信用户输入.Javascript验证太容易规避.因此,您需要检查服务器端的输入.
总之是的.您永远不能依赖浏览器发送给您的内容是合法的.