Php 安全措施——何时和如何采取
目前,我正在升级一个web应用程序,在该应用程序中,我将从登录的用户那里获得大部分输入。输入将包含有效的html、图像、音频、视频和上传工具,并上传到用户定义的路径。然后应用程序将其格式化为漂亮的ui并显示给最终用户。这些特权用户可以使用基于web的界面添加/修改/删除内容 根据基本经验法则:我应该在进入数据库之前转义我的数据,而不是从用户那里接收数据。为了实现这一目标,我计划采取以下安全措施。这也包括我的问题Php 安全措施——何时和如何采取,php,mysql,security,web-applications,Php,Mysql,Security,Web Applications,目前,我正在升级一个web应用程序,在该应用程序中,我将从登录的用户那里获得大部分输入。输入将包含有效的html、图像、音频、视频和上传工具,并上传到用户定义的路径。然后应用程序将其格式化为漂亮的ui并显示给最终用户。这些特权用户可以使用基于web的界面添加/修改/删除内容 根据基本经验法则:我应该在进入数据库之前转义我的数据,而不是从用户那里接收数据。为了实现这一目标,我计划采取以下安全措施。这也包括我的问题 我使用准备好的语句将所有用户输入存储到数据库中。我希望这可以消除DB注入的威胁。
- 这措施够吗?或者我需要为mysql
之类的查询检查%和uu符号吗
strip_标记
&htmlentities
。
- 这是否足够?我应该用更多吗
htmlentities
在文本上,然后插入到DB中。
- 据我所知,在插入数据库之前,我不应该使用
,但必须使用,因为以前的程序员正在使用它。这有什么负面影响吗htmlentities
- 我应该在显示之前处理/清理数据吗?如果是,那怎么办
你好
世界
,我希望用户只看到两个单词,而不是实际的文本。
- 为了实现这一点,我如何确保用户不添加恶意脚本,同时浏览器正确地存储、获取和解析html标记
请说明当前方法是否充分/不充分/较少/不正确。 我既不是100%的php新手,也不是专业人士。我知道php(或者我们可以说是所有web应用程序)安全性的基本知识。所以,如果我在安全方面犯了任何错误,或者不应该做某事,或者应该或多或少做某事,请有人来指导我 我知道安全的基本知识,但我仍然感到困惑
- 在哪一点应用哪一种确切的安全措施?(例如,插入数据库前的转义字符串)
- 在每一点上,php中可用的函数是什么?(例如,要转义字符串,请使用准备好的语句)
%
和
在类似的
查询中,准备好的语句无法逃避它们,因为它无法知道您是否需要这些值strip_标记
绝对不足以接受某些HTML,但不能接受其他“不安全”的HTML。您需要一个比strip\u tags
更复杂的库,该库具有更复杂的白名单规则。据推测,唯一能做到这一点的图书馆是。我会通过它运行所有用户HTML请注意,预处理语句的第一个目标不是阻止SQL注入,而是非常有用的。@Debflav。是的,我完全同意。它有助于创建与数据库无关的应用程序。但我一直使用mysql,它也帮助我转义数据。对于“5”,您可以使用。谢谢您快速详细的回答。用html标签(选项3)安全地显示用户给定的输入的最佳方法是什么(是否清理一个合适的单词?)?我想我用html净化器回答了这个问题。。。?如果数据不应该包含HTML,则对其进行转义(
htmlspecialchars
),这将删除任何特殊的HTML含义。如果它应该包含HTML,那么请清理该HTML以确保它不包含任何恶意代码(HTML净化器)。。。我还不够清楚。我应该问一下,在没有额外库的情况下,保护数据的方法是什么?我的意思是如何使用纯php函数(我能确定它以前一定做过吗)?据我所知,没有安全的方法来清理php中内置的HTML。