关于实时搜索字段中的安全性的问题

时间:2009-10-28 23:12:40

标签: php javascript database security

这是一个奇怪的问题。我有一个正在处理申请的朋友。有一个包含4个字段的表,其中包含一个单词和一些其他内容的定义。在网站上有一个文本框,用户可以在其中输入字符串并查询数据库,并在框中输入字符串时查找类似的内容。 (实时搜索的东西)。

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

据我所知,它是用PHP和Javascript编写的。在查询之前,您是否只需要进行Javascript验证?或者甚至是必要的?

提前致谢! :)

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

从我收集的内容来看,你谈论的是autocomplete pattern

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

是的,您肯定希望在后端应用适当的安全措施。

这会回答你的问题吗?