【问题标题】:Question about Security in a live search field关于实时搜索字段中的安全性问题
【发布时间】:2010-12-11 01:48:56
【问题描述】:

这是一个奇怪的问题。我有一个朋友正在开发一个应用程序。有一个包含 4 个字段的表,其中包含一个单词和一个定义等。在网站上有一个文本框,用户可以在其中输入字符串,然后在输入框中查询数据库并查找相似的内容。 (一种实时搜索之类的东西)。

如果所写的内容没有像您的常规站点搜索那样实际提交,是否存在安全风险?此时您将如何使用正则表达式等来验证内容?

据我所知,它是用 PHP 和 Javascript 编写的。你会在查询之前验证 Javascript 吗?还是有必要?

提前致谢! :)

【问题讨论】:

    标签: php javascript database security


    【解决方案1】:

    对于数据库查询,恶意用户输入始终存在固有风险。快速查看这个快速的SQL Injection 维基百科条目以熟悉该主题。

    如果您偏执,可以在 PHP 中使用 preg_replace() 将字符列入白名单,以便在查询之前删除任何不匹配的字符。

    除了少数例外,您应该在查询中使用的任何和所有用户提供的变量上使用 mysql_real_escape_string()。例外情况包括您可以使用 (int)(float) 等进行类型转换的十进制值。

    只要您在提交输入文本后不使用 javascript 在页面上的其他位置显示搜索文本,就不需要对跨站脚本 (XSS) 预防做任何事情。

    【讨论】:

    • PDOStatement > PDO::quote > mysql_real_escape_string
    【解决方案2】:

    据我所知,您说的是autocomplete pattern

    对于 Web 应用程序,这通常通过 AJAX 实现。而且由于 AJAX 只是不定时的 HTTP 消息传递,因此通过 AJAX 请求发送的数据会受到与任何其他 HTTP 请求的内容相同的陷阱和安全漏洞 - SQL 注入、数据包嗅探等。

    所以是的,您肯定想在后端应用适当的安全措施。

    这能回答你的问题吗?

    【讨论】:

    • 我认为他隐约意识到存在安全风险,但他的问题还包括如何解决这些风险
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 2019-04-25
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多