这是一个奇怪的问题。我有一个正在处理申请的朋友。有一个包含4个字段的表,其中包含一个单词和一些其他内容的定义。在网站上有一个文本框,用户可以在其中输入字符串并查询数据库,并在框中输入字符串时查找类似的内容。 (实时搜索的东西)。
如果正在编写的内容实际上没有像常规网站搜索那样提交,是否存在安全风险?您如何使用正则表达式等在此时验证内容?
据我所知,它是用PHP和Javascript编写的。在查询之前,您是否只需要进行Javascript验证?或者甚至是必要的?
提前致谢! :)
答案 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注入,数据包嗅探等。
是的,您肯定希望在后端应用适当的安全措施。
这会回答你的问题吗?