【问题标题】:Script injection - form validation (jquery)脚本注入 - 表单验证(jquery)
【发布时间】:2009-11-01 15:46:11
【问题描述】:

我在我的网站上使用多种表单将数据发送到 MySQL。

如果我不想让用户通过我的表单向数据库发送任何脚本,那么验证我的表单的最佳方式/方法是什么?

【问题讨论】:

  • 这个描述太模糊了。当您说“您使用几种形式发送数据”时,您是什么意思?表单是否回传到执行实际交互的中间脚本,或者是否有一些彻头彻尾的可怕事情,比如直接传递到 MySQL?

标签: php jquery html


【解决方案1】:

忘记 jQuery。你不能使用客户端上运行的任何东西来保证安全——客户端总是可以覆盖它。

您需要处理服务器上的数据。请参阅 How can I prevent SQL injection in PHP? 以保护您的数据库和 What are the best practices for avoiding xss attacks in a PHP site 以保护您的页面。

【讨论】:

    【解决方案2】:

    这是否曾经是一个加载的问题...并且涵盖的内容超出了一个答案的范围。

    如果您必须按您所做的一般术语提出问题,我强烈建议您找一位导师来帮助您,因为这不是您真正想边做边学的主题。

    已经提出了几个类似的问题,我强烈建议您找出并阅读它们。此外,寻找一些关于此的高质量博客文章和/或以与您正在构建的产品相似的特定产品为中心的社区,看看他们是如何做到的。

    在此期间的一些提示:

    • 我注意到jquery 标记... JavaScript 验证应该是您关注的第二件事,并且更多地是为用户提供即时反馈的一种方式。因为它可以在客户端关闭,所以您不能依赖正在执行的任何 JavaScript 验证。
    • 严格检查服务器上的数据类型。如果您应该得到一个数字,请确保它确实是一个数字。如果它是少数选项之一,请检查并仅接受可用选项。
    • 不要只接受来自表单控件的数据 - 即使它是一个选择框或隐藏字段。人们会玩弄你的表单数据,你不能指望取回你认为会取回的东西。

    【讨论】:

      【解决方案3】:

      为防止 SQL 注入,请使用prepared statements。为防止 HTML 注入,请查看 htmlspecialchars、htmlentities、strip_tags 和 filter 函数,或使用第三方库去除除白名单之外的所有标签和属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-02
        • 1970-01-01
        • 2022-08-03
        • 2013-02-10
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        • 1970-01-01
        相关资源
        最近更新 更多