2009-10-28 46 views
0

这是一个奇怪的问题。我有一个朋友正在研究一个应用程序。有一个有4个字段的表格,其中包含一个词和一个定义。在网站上有一个文本框,用户可以在该框中输入字符串并查询数据库,并在输入字符串时查找类似的内容。 (一种实时搜索的东西)。关于实时搜索字段中安全性的问题

如果正在写入的内容实际上没有像您常规的网站搜索一样提交,那么是否存在安全风险?如何使用正则表达式或类似方法验证此时的内容?

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

在此先感谢! :)

回答

2

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

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

除少数例外情况外,您应该对查询中使用的任何和所有用户提供的变量使用mysql_real_escape_string()()。例外情况包括,您可以使用强制转换十进制值(INT)(浮动)

只要你不使用JavaScript来提交输入后,网页上显示的其他地方搜索文本文本,您不需要在跨站点脚本(XSS)预防方面做任何事情。

+0

PDOStatement> PDO :: quote> mysql_real_escape_string – tommym 2009-10-29 00:03:47

1

从我收集的内容来看,你在说的是autocomplete pattern

对于Web应用程序,这通常是通过AJAX实现的。而且由于AJAX仅仅是转身的HTTP消息传递,因此与AJAX请求一起发送的数据受到所有其他HTTP请求的内容相同的缺陷和安全漏洞 - SQL注入,数据包嗅探等。

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

这是否回答你的问题?

+0

我想他隐约意识到存在安全风险,但他的问题还包括如何解决这些风险 – 2009-10-28 23:32:58

+0

感谢您的链接,这个答案也有帮助! – bob 2009-10-28 23:36:54