搜索文件 /

安全

消毒用户输入<!--t.168.13.5.2-->

对于诸如 离子警报 开发人员可以允许自定义或用户提供的内容。此内容可以是纯文本或HTML,并且应该被认为不受信任。与任何不受信任的投入一样,在用它做任何其他事情之前,重要的是消毒它。特别是,使用类似的东西 innerhtml. 没有消毒,为不良演员提供了一种攻击矢量,以输入恶意内容并潜在地推出a<一种HREF.="https://en.wikipedia.org/wiki/Cross-site_scripting" c-id="168.23.5.5"> 跨站点脚本攻击(XSS)<!--t.168.25.5.6-->。

betway东盟体育appIONIC为其提供的组件内置的基本待遇方法,但对于用户创建的组件,它取决于开发人员,以确保消毒所有数据。不同的框架具有不同的解决方案,可以解决用户输入,因此开发人员应该熟悉其特定框架优惠的产品。

对于不使用框架的开发人员,或者为其框架没有提供所需的消毒方法的开发人员,我们建议使用<一种HREF.="https://www.npmjs.com/package/sanitize-html" c-id="168.32.5.1"> Sanitize-HTML.<!--t.168.34.5.2-->。此包提供了一个简单的HTML Soonitizer,允许开发人员指定他们希望在其应用程序中允许的确切标记和属性。

棱角<!--t.168.40.5.2-->

角度内置了 domsanitizer 班级。这有助于通过确保在DOM中使用值来防止XSS问题。默认情况下,Angular将标记它认为不安全的任何值。例如,以下链接将以角度标记为不安全,因为它将尝试执行一些JavaScript。


              民众
             迈尔尔
              
             
              细绳
             
              =
             
              'JavaScript:警报(“哦不!”)'
              ;
             
              ......
             
              <
             一种
              [
             HREF.
              ]
              =
              “myurl”
              >
             点击我
              
              <
              /
             一种
              >

要了解有关角度提供的内置保护的更多信息,请参阅<一种HREF.="https://angular.io/guide/security" c-id="168.100.5.1"> 角度安全指南<!--t.168.102.5.2-->。

反应<!--t.168.108.5.2-->

在通过将它们转换为字符串之前,请在JSX中嵌入嵌入在JSX中的值。例如,以下是安全的 姓名 在呈现之前将转换为字符串:


              Const.
             姓名
              =
             价值
              
             姓名
              ;
             
              Const.
             元素
              =
             
                <
               H1.
               >
              你好,
              {
             姓名
              }
              
                
               H1.
               >
              ;

但是,这不会阻止某人将JavaScript注入其中的地方 HREF. 锚元素的属性。以下是不安全的,可能会允许XSS攻击发生:


              Const.
             UserInput.
              =
             
              'JavaScript:警报(“哦不!”)'
              ;
             
              Const.
             元素
              =
             
                <
               一种
              
               HREF.
                =
                {
               UserInput.
                }
               >
              点击我!
                
               一种
               >

如果开发人员需要实现更全面的待遇,他们可以使用<一种HREF.="https://www.npmjs.com/package/sanitize-html" c-id="168.223.5.1"> Sanitize-HTML.<!--t.168.225.5.2-->包裹。

要了解有关React和JSX提供的内置保护的更多信息,请参阅<一种HREF.="https://reactjs.org/docs/introducing-jsx.html" c-id="168.229.5.1"> 反应JSX文档<!--t.168.231.5.2-->。

Vue.<!--t.168.237.5.2-->

Vue不提供内置的任何类型的消毒方法。建议开发人员使用诸如<一种HREF.="https://www.npmjs.com/package/sanitize-html" c-id="168.241.5.1"> Sanitize-HTML.<!--t.168.243.5.2-->。

了解有关安全建议的更多信息,以绑定到指令 V-HTML ,看看<一种HREF.="https://vuejs.org/v2/guide/syntax.html" c-id="168.250.5.3"> VUE语法指南<!--t.168.252.5.4-->。

从内置清理程序中弹出<!--t.168.258.5.2-->

对于希望将复杂的HTML添加到组件的开发人员,例如 离子吐司 ,他们需要从Sanitizer中弹出,该框架内置于离子框架中。betway东盟体育app开发人员可以在整个应用程序上禁用Sacitizer,或者逐个逐个绕过它。

绕过Sanitization功能可以让您的应用程序易受伤害<一种HREF.="https://en.wikipedia.org/wiki/Cross-site_scripting" target="_blank" rel="noreferrer" c-id="168.270.6.1"> XSS攻击<!--t.168.272.6.2-->。在禁用消毒仪时,请务必谨慎。

通过配置禁用Sacitizer<!--t.168.279.5.2-->

betway东盟体育app离子框架提供了一个可调用的应用程序配置选项 SanitizerEnabled. 那样 真的 默认。将此值设置为 错误的 全球禁用在消毒器中内置的离子框架。betway东盟体育app请注意,这不会禁用其他框架(例如Agenular)提供的任何消毒功能。

逐个案例绕过Sanitizer<!--t.168.297.5.2-->

开发人员还可以选择在某些方案中从Sunitizer弹出。betway东盟体育app离子框架提供 betway东盟体育appIonicsafestring. 允许开发人员这样做的课程。

用法<!--t.168.309.5.2-->


                进口
               
                {
               betway东盟体育appIonicsafestring.
                
               ToastController.
                }
               
                
               
                '@betway东盟体育app离子/棱角'
                ;
               
                ......
               
                构造函数
                
                 私人的
                ToastController.
                 
                ToastController.
                的)
               
                {
                }
               
                异步
               
                透明
                
                的)
               
                {
               
                Const.
               吐司
                =
               
                等待
               
                
                
               ToastController.
                
                创建
                
                {
               信息
                
               
                新的
               
                betway东盟体育appIonicsafestring.
                
                '<离子按钮>你好!'
                的)
                
               期间
                
               
                2000年
               
                }
                的)
                ;
               吐司
                
                展示
                
                的)
                ;
               
                }
               

                进口
               
                {
               betway东盟体育appIonicsafestring.
                }
               
                
               
                '@betway东盟体育app离子/核心'
                ;
               
                ......
               
                Const.
               
                异步
               
                透明
               
                =
               
                
                的)
               
                =>
               
                {
               
                Const.
               吐司
                =
               文档
                
                牧马赛
                
                '离子吐司'
                的)
                ;
               吐司
                
               信息
                =
               
                新的
               
                betway东盟体育appIonicsafestring.
                
                '<离子按钮>你好!'
                的)
                ;
               吐司
                
               期间
                =
               
                2000年
                ;
               文档
                
               身体
                
                阑尾
                
               吐司
                的)
                ;
               
                返回
               吐司
                
                展示
                
                的)
                ;
               
                }
               

                进口
               反应
                
               
                {
               useestate.
                }
               
                
               
                '反应'
                ;
               
                进口
               
                {
               动画
                
               IonButton.
                
               离子联系
                
               betway东盟体育appIonicsafestring.
                
               iontoast.
                }
               
                
               
                '@betway东盟体育app离子/反应'
                ;
               
                出口
               
                Const.
               兜售
                
               反应
                
                FC.
               
                =
               
                
                的)
               
                =>
               
                {
               
                Const.
               
                [
               showtoast.
                
               setshowtoast.
                ]
               
                =
               
                useestate.
                
                错误的
                的)
                ;
               
                返回
               
                
               
                <
               离子联系
                >
               
                <
               Ionbutton onclick.
                =
                {
                
                的)
               
                =>
               
                setshowtoast.
                
                真的
                的)
                }
               扩张
                =
                “堵塞”
                >
               显示吐司
                <
                /
               IonButton.
                >
               
                <
               Iontoast Isopen.
                =
                {
               showtoast.
                }
               ondiddismiss.
                =
                {
                
                的)
               
                =>
               
                setshowtoast.
                
                错误的
                的)
                }
               信息
                =
                {
                新的
               
                betway东盟体育appIonicsafestring.
                
                '<离子按钮>你好!'
                的)
                }
               期间
                =
                {
                2000年
                }
               
                /
                >
               
                <
                /
               离子联系
                >
               
                的)
               
                }
                ;

Baidu