好吧,现在我进退两难了,我需要允许用户插入原始HTML,但也阻止所有JS-不仅仅是脚本标签,还有href等。目前,我所知道的是htmlspecialchars($string,ENT_QUOTES,'UTF-8');但这也会将有效标签转换为编码字符。如果我使用striptags,它也不起作用,因为它删除标签!(我知道你可以允许标签,但问题是如果我允许任何标签,例如,人们可以向它添加恶意JS。我能做些什么来允许html标签但没有XSS注入(inject)吗?我计划了一个功能:xss()并用它设置我网站的模板。它返回转义的字符串。(我只需要帮助转义:))谢谢!
这是我应该在javascriptalert()中输出的字符串示例;带“双引号”的字符串因为我的用户可以通过PHP编辑这个字符串,所以更好地防止XSS攻击。要在我的文档的HTML中这样做,我通常会这样做:效果很好。但现在我只注意到如果我在javascript警报中输出相同的字符串:alert("");在这种情况下警报的输出是:带“双引号”的字符串在里面在警报中输出双引号的最佳方式是什么,同时又能防止XSS注入(inject)? 最佳答案 ENT_NOQUOTES标志确保所有引号'和"不被转义并且addslashes将它们转义以用于js
我们最近有一个网站被黑了,一些PHP代码被注入(inject)到index.php文件中,看起来像这样:eval(gzinflate(base64_decode('s127ezsS/...bA236UA1')));该代码导致包含另一个PHP文件(cnfg.php),这导致显示一些与药物相关的垃圾邮件(但仅对googlebot等人可见)。这看起来像是WordPress的pharmahack,只是我们没有运行WordPress。该代码已被删除,但我想防止将来发生此类事件。我意识到这是一个相当广泛的问题,可能存在无数的安全漏洞,但我认为我会把它放在那里,以防任何人过去遇到过此类问题。允许上传
如何保护以下基于DOM的XSS攻击?具体来说,是否有一个protect()函数可以使下面的内容安全?如果不是,那么还有其他解决方案吗?例如:给div一个id,然后为元素分配一个onclick处理程序varxss="";$("#mydiv").html("")我希望得到的答案不是“避免使用innerHTML”或“将xss变量正则表达式为[a-zA-Z0-9]”...即:是否有更通用的解决方案?谢谢 最佳答案 扩展Vineet的回复,这里有一组要研究的测试用例:http://ha.ckers.org/xss.html
我知道这个问题已经被问了一遍又一遍,但我仍然没有找到我喜欢的完美答案,所以这里再次...我已经阅读了很多关于CI的xss_filter的两极分化评论。基本上大多数人都说这不好。有人可以详细说明它有多糟糕,或者至少给出1个最可能被利用的场景吗?我查看了CI2.1中的安全类,我认为它非常好,因为它不允许恶意字符串,如document.cookie、document.write等。如果该站点基本上没有html表示,那么在插入到数据库之前使用全局xss_filter是否安全(或者如果它真的对性能影响那么大,请在每个表单发布的基础上使用它)?我一直在阅读关于是否在输入/输出上转义的利弊,大多数人
这是易受攻击的代码确保清除进入目标的讨厌的东西的适当方法是什么? 最佳答案 首先,这是一个漏洞OWASP将其归类为“未验证的重定向和转发”。参见OWASP'sguideformoreinformation.一些有趣的攻击是可能的。参见thisthreadonsla.ckers.orgforideas关于如何滥用它。您如何保护自己?验证URL的方案。您通常只想支持http和https。中止任何其他方案的请求。解析URL,并提取域。只允许重定向到已知的域列表。对于其他域,中止请求。就是这样。
$this->input->post('问题',TRUE)即使我添加TRUE,它仍然允许人们添加html代码。这是为什么? 最佳答案 xss_clean()函数不会删除所有HTML,它会删除/替换被认为是危险的特定内容,例如。标签。http://codeigniter.com/user_guide/libraries/security.htmlTheXSSfilterlooksforcommonlyusedtechniquestotriggerJavascriptorothertypesofcodethatattempttohija
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:PHPhtmlentities()oninputbeforeDBinsert,insteadofonoutput对于只是试图保护自己免受XSS之类攻击的PHP应用程序,应该在什么阶段调用htmlentities()函数?应该在初始用户输入时调用,还是在输出数据的每个页面呈现时调用?如果我对用户输入使用htmlentities(),我最终会在数据库中存储更多的数据。但是,从长远来看,我节省了CPU周期,因为我只需要对输入执行转换,而不必再对数据的后续输出执行此操作。我应该指出,我看不到任何可预见的情况下必须在我
htmlentities是防止PHP中的XSS的最佳解决方案吗?我还想允许像b、i、a和img这样的简单标签。实现这一点的最佳解决方案是什么?我确实考虑过bbcode,但发现如果没有正确实现,我也会遇到XSS问题。我应该怎么办?欢迎任何优秀的第三方库。编辑:我刚刚尝试了HTMLPurifier,但在这种情况下失败了。Justseethisexample 最佳答案 为此,我会选择HTMLPurifier,是的,您也可以在那里指定白名单标签。HTMLPurifierisastandards-compliantHTMLfilterlibr
在我的php应用程序中,我有一个文本框,它从用户那里接收Markdown(比如stackoverflow的),然后它显示在网站上。我正在使用Laravel框架并使用parsedown-laravel包裹。我能做到:{!!Markdown::parse('__Hello__Markdown!');!!}有效。{!!Markdown::parse('HelloMarkdown!');!!}它仍然有效。我对此没有意见。现在如果我这样做:{!!Markdown::parse('alert("XSSAttack!!!")Markdown!');!!}它仍然有效!!!如何使用Laravel和这个包