在我网站的管理区域中,我在检索进入数据库的表单输入时一直使用mysqli_real_escape_string。它工作正常但我意识到它不会阻止脚本注入。我的意思是我可以通过以下脚本:
<script>alert('hello');</script>
除此之外我还使用什么来防止恶意管理员注入一些讨厌的东西?
htmlentities()
?strip_tags()
?htmlspecialchars()
?在输入数据不需要html的后端表单中清理表单输入的正确方法是什么?我很困惑?
答案 0 :(得分:2)
htmlentities()
和htmlspecialchars()
。编码和转义是不同的。
如果您不想要HTML,我的建议是使用strip_tags()
清除任何HTML标记,并在输出内容时使用html*
。
此外,您可以考虑切换到MySQL PDO。这是运行查询的更首选和安全的方式。
答案 1 :(得分:0)
您应该使用htmlentities()
。
答案 2 :(得分:0)
您要查找的字词为Cross Site Scripting
或XSS
。搜索它应该为您提供大量资源,例如StackOverflow上的this question。
答案 3 :(得分:0)
正确答案在很大程度上取决于您的申请。
许多管理系统需要管理员操作HTML的方式。但是有些HTML比其他HTML更危险。
正如JohnP所说,strip_tags()可以很方便,因为第二个参数允许你明确地允许某些无害的标签(比如或),同时剥去其他任何东西(比如或)
如果您需要更多的复杂性,您需要进行更仔细的分析,并根据您的需求提供量身定制的解决方案。 (提示:如果该解决方案涉及使用正则表达式来匹配HTML标记,则可能需要退一步)
答案 4 :(得分:-1)
如果您使用的是php 4或更低版本的PHP 5.2或更低版本,则可以使用magic_quotes
函数进行清理。