十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
有两种方法:
十多年的雁江网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整雁江建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“雁江网站设计”,“雁江网站推广”以来,每个客户项目都认真落实执行。
1、在同一个CSS样式表中,使用 !important 来定义不同的值以适应Firefox和IE。
例如:
padding: 20px !important; /For Firefox/
padding: 10px; /For IE/
(注意这里IE6是无法识别,important 这个标记的,但它会识别padding: 20px,所以要在后面加上padding: 10px用来覆盖padding: 20px)这个方法适用于修改少量代码。
2、条件注释。(只对IE浏览器有效)这也是北极冰仔部落格目前使用的方法。先为不同浏览器书写各自的CSS样式,再在head中加入以下的代码以适应不同的IE浏览器版本调用:
注意:
gt: greater than (高于)
lte: less than or equal to (低于或等于)
另外:IE还支持一个非标准的标签:comment
This is not Internet Explorer.
This is Internet Explorer.
IE会自动把此标签中的内容当作注释处理掉。
扩展资料
关于css兼容性问题及一些常见问题
目前主流浏览器的兼容性做的都比较好了,以下主要针对IE6,7的不兼容问题进行解决。
1、有浮动存在时,计算一定要精确,不要让内容的宽高超出我们所设置的宽高,IE6下,内容会撑开设置好的高度。
解决方法:给对应的父级加overflow:hidden;但是会有部分被隐藏掉,最好是精确计算宽高再设定。
2、在IE6下有元素浮动时,如果宽度需要由内容撑开,就给里边的块元素都加浮动,正常浏览器不用加浮动。
3、在IE6下元素的高度的小于19px的时候,会被当做19px来处理。
解决办法:添加overflow:hidden;
对于他们的攻击,主要是通过使用正则表达式来做输入检测:
检测SQL meta-characters的正则表达式 :/(\%27)|(’)|(--)|(\%23)|(#)/ix
解释:我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。
修正检测SQL meta-characters的正则表达式: /((\%3D)|(=))[^ ]*((\%27)|(’)|(--)|(\%3B)|(:))/i
解释: 这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。
典型的 SQL 注入攻击的正则表达式: /w*((\%27)|(’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
解释:
w* - 零个或多个字符或者下划线。
(\%27)|’ - 单引号或它的hex等值。
(\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -‘or’的大小写以及它的hex等值
检测SQL注入,UNION查询关键字的正则表达式: /((\%27)|(’))union/ix
(\%27)|(’) - 单引号和它的hex等值
union - union关键字
可以同样为其他SQL查询定制表达式,如 select, insert, update, delete, drop, 等等.
检测MS SQL Server SQL注入攻击的正则表达式: /exec(s|+)+(s|x)pw+/ix
exec - 请求执行储存或扩展储存过程的关键字
(s|+)+ - 一个或多个的空白或它们的http等值编码
(s|x) p- ‘sp’或‘xp’字母用来辨认储存或扩展储存过程
w+ - 一个或多个字符或下划线来匹配过程的名称
CSS的检测也主要是正则表达式:
一般 CSS 攻击的正则表达式: /((\%3C)|)((\%2F)|/)*[a-z0-9\%]+((\%3E)|)/ix
解释:
((\%3C)|) -检查和它hex等值
((\%2F)|/)*-结束标签/或它的 hex等值
[a-z0-9\%]+ -检查标签里的字母或它hex等值
((\%3E)|) -检查或它的hex等值
"img src" CSS 攻击正则表达式: /((\%3C)|)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^ ]+((\%3E)|)/I
解释:
(\%3 C)|) -或它的hex等值
(\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -’img’字母或它的大小写hex等值的变化组合
[^ ]+ -除了换行符以外的任何跟随img的字符
(\%3E)|) -或它的hex等值
CSS 攻击的极端的正则表达式 : /((\%3C)|)[^ ]+((\%3E)|)/I
解释:
这个规则简单寻找+除换行符外的任何字符+。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。
偶也是初学者,多多指教啊。CSS是Cascading Style Sheets(层叠样式表单)的简称。更多的人把它称作样式表。顾名思义,它是一种设计网页样式的工具。借助CSS的强大功能,网页将在您丰富的想象力下千变万化。实际上CSS的代码都是由一些最基本的语句构成的。它的基本语句的结构是这样的:
选择符{属性:属性值}
看,是不是很简单,只有三部分。1. CSS的要点是在你的页面中使用简洁的HTML代码,然后编写CSS"控制规则"来样式化页面中的对象.页面保持清晰有条不紊看上去非常棒.这样你的Html页面可以在移动设备和标准浏览器中运行.这就是CSS的要点.不过CSS的艺术在于能够利用CSS控制规则快速有效地操纵页面对象.把CSS规则与HTML标记匹配起来的操做就好像是一种对话:两者需要条理清楚且保持同步,否则的话他们将答非所问,搞得你头大.2. 常规操作还是灵活匹配:假设你要样式化页面中一个h1header,可选择操作有: *用CSS规则h1{...定义所有的h1标记
*在对象实际位置进行样式定义,举个例子:b位于标记p的内部,在定义的时候你应该这样p b{...
*针对某个特定的类型进行定义,为你想定义的标记h1添加class="myheader",然后使用CSS规则 .myheader{...
*仅仅定义个别h1header,你可以为标记h1添加id="myheader",然后使用CSS规则#myheader{...
当然你也可通过不同的方式混合使用上面的规则:
要定义所有位于类型为"magicform"的表单中的类型为"barleymash"的h1标记,你可以这样form.magicform h1.barleymash {...3. 获取目标:匹配规则出错会浪费很多的时间,这里有个小窍门:在打算实施你的规则之前,不妨先使用color:red;这个属性,它既书写简便又利于观察. 一旦你看到HTML页面中的文本变为红色,说明规则匹配正确.这时你会知道你的规则可以在文档中正确的部分生效,然后,删除color:red;替换成原来你想实施的规则语句.4. 掌握专利技术JM3 Gasbag Model:一个CSS布局设计就好比一个装满对象的大袋子.每一个对象均能够对外施加压力(联想一下煤气泄露,如同你的布局设计)大多数情况下,压力表现出来(margins, padding,以及float都是跟"推"密切相关的属性)通过修改CSS规则,你判断压力,在浏览器中观察你的页面好比是摇晃一下袋子,会显现出压力集中在什么区域产生影响,这就是CSS-管理压力对象保持平衡的秘密.对付压力,一次性应用过多的属性,冲突就会导致你的对象到处拥挤,对象相互之间以及袋子会被扎出许多洞来.页面漏洞百出,实在是没劲.
Gasbag 例子1:要产生居中的效果,设置margin-left:auto ,margin-right:auto;这样做是有效的,因为你平衡了分布在左右两侧的压力,于是元素就像放置在两块磁铁中间的铁球一样被完美保持在了中间位置.5. GasbagCorollary 1:JM3 Gasbag Model 只适用于使用默认的CSS"telative"定位模式.当然也可能适用于"absolute"的定位模式(通过给定精确的坐标定位每个模块的布局方式),但是千万不要轻易这样做,一旦文本或者图象的数量有所变动它会花费你很长时间来重新布局并且使你的页面看上去很糟糕.只有那些怪异的出版设计师愿意那样做.6. 规则A-Divs和Spans:CSS中的混合语言是两个名为div和span的标记,两者均没有默认的外观,所谓的 div以及span不过是一些容器和在文本中的线。他们只是普通的用以应用样式的标记7. 规则B:Div是容器,span是文本,div是有高度,宽度,队列可以与之打交道。还有:一个div 的高度是指它其中内容的高度(文本、图像或者其他div).sapn标记用于文本中的分割,正因他们只在成一条直线的文本中有意义,所以被称为"inline"元素,其他的标记如:bold(b),italic(i),underline(u)等,他们被称为是 span/元素。 不要使用div来标记文本,也不要将span直接用于“袋子”,这样你的布局工作才会变得容易8. 应用CSS的三个级别:应用于较多数量的页面(通过使用扩展名为.css的文件)适用于单一页面(通过定义一个样式代码块),还有就是应用于页面内部明确的标记(通过在标记内部添加style"..."属性),当你完成一个页面布局设计,把所有的CSS代码转换为一个独立的css文件是一个不错的主意-你可以到处使用它。当你测试代码时,仅仅将此CSS文件内容复制到HTML页面内部的样式代码块中(这对你来说很容易做到)然后你就不必在两个文件之间来回切换.当样式代码定下来的时候再修改原CSS文件(我认为这段话作者的意思是:不断备份一个稳定的测试代码).9. 保持代码简洁:书写简洁的HTML虽然很简单,但即便是那些自认为很了解CSS的人也没有把它写的简洁高效。高效的代码不能使你的页面载入更快,但是它能够让你的编码工作更容易。 three tips:
*精简你的规则语句:将(font-family, font-size) (margin-left, margin-right)转换为单行规则margin:0px 10px 10px 10px;
*当你看到一个人的层叠样式表有许多像下面这样的行:
.redtext {font-family: Arial, Helvetica, sans-serif;color: red;}
.bluetext {font-family: Arial, Helvetica, sans-serif;color: blue;}
这就表示他们可能不知道这个技巧。
*使用“,”一次性将同一CSS样式规则应用到多种类型的HTML标记中: p, b, i {… 使用一行代码完成把样式应用到段落、粗体、 以及斜体文本的任务.10. 所谓技巧(hacks)其实是愚蠢的,你不需要他们:许多CSS指南的书都一再强调“要使你的页面适应多浏览器环境,你应当学习很多“CSS技巧”。诸如此类都是废话。它对你来说毫无用处。 对每个人来说学习CSS开始都是一个痛苦的过程。不必担心,愚蠢的不是你而是CSS。不要认为你需要记住所有的属性,可以在旁边打开网页Got API’s handy cheat sheet参考的嘛!
请按以下步骤操作:
1、打开一个aspx或html文件,在“HTML源编辑器”中的Schema改为“IE6”
2、双击一个css文件,它现在可以正常打开了。
3、关闭这个css文件,再将“HTML源编辑器”中的Schema改为“Html5”
4、再次尝试打开这个Css文件,如果能打开,就一切OK了。
Note:已升级了SP1的VS2010已自带了Html5+Css3的,不用下载什么Html5与Css3补丁。
CSS是Cascading Style Sheets(层叠样式表单)的简称。更多的人把它称作样式表。顾名思义,它是一种设计网页样式的工具。借助CSS的强大功能,网页将在您丰富的想象力下千变万化。
想学的话,推荐一个好站给你
随着前端技术的发展,安全问题已经从服务器悄然来到了每一个用户的的面前,盗取用户数据, 制造恶意的可以自我复制的蠕虫代码,让病毒在用户间传播,使服务器当掉. 更有甚者可能会在用户不知觉得情况下,让用户成为攻击者,这绝对不是骇人听闻。富客户端的应用越来越广,前端的安全问题也随之增多,今天就简单介绍下一些常见的攻击方式和预防攻击办法。
常见攻击
XSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。但是随着前端技术的不断进步富客户端的应用越来越多,这方面的问题越来越受关注。举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本,那么当前所有看到你新信息的人的浏览器都会执行这个脚本弹出提示框 (很爽吧 弹出广告 :)),如果你做一些更为激进行为呢 后果难以想象。
CSRF(Cross Site Request Forgery),跨站点伪造请求。顾名思义就是 通过伪造连接请求在用户不知情的情况下,让用户以自己的身份来完成攻击者需要达到的一些目的。csrf 的攻击不同于xss csrf 需要被攻击者的主动行为触发。这样听来似乎是有“被钓鱼”的嫌疑哈哈。
多窗口浏览器这这方面似乎是有助纣为虐的嫌疑,因为打开的新窗口是具有当前所有会话的,如果是单浏览器窗口类似ie6 就不会存在这样的问题,因为每个窗口都是一个独立的进程。举个简单例子 : 你正在玩白社会, 看到有人发了一个连接,你点击过去,然后这个连接里面伪造了一个送礼物的表单,这仅仅是一个简单的例子,问题可见一般。
cookie劫持,通过获取页面的权限,在页面中写一个简单的到恶意站点的请求,并携带用户的cookie 获取cookie后通过cookie 就可以直以被盗用户的身份登录站点。这就是cookie 劫持。举个简单例子: 某人写了一篇很有意思的日志,然后分享给大家,很多人都点击查看并且分享了该日志,一切似乎都很正常,然而写日志的人却另有用心,在日志中偷偷隐藏了一个对站外的请求,那么所有看过这片日志的人都会在不知情的情况下把自己的cookie 发送给了 某人,那么他可以通过任意一个人的cookie 来登录这个人的账户。
我们该怎么做?
大致可以分为两类 1 一般用户 2网站开发人员。
首先我们来说说做为一个一般的web产品使用者,很多时候我们是被动的,是在不知情的情况下被利用的。那么我们可以:
1 对于安全级别较高的web应用访问 需要打开一个独立浏览器窗口。
2 对于陌生人发布的链接最好也是复制然后在新开的窗口中打开,当然最好的办法就是无视 – -。
对于开发人员来说我们得从相对详细的一些角度来分析:
对于xss 攻击 特点是攻击者的代码必须能获取用户浏览器端的执行权限,那么代码是从哪里来的呢,想要杜绝此类攻击出现 其实可以在入口 和出口 进行严格的过滤,这样的双保险应当说99% 的类似问题就被我们解决掉了,另外的1% 是那些蹩脚的浏览器带来的后遗症,相信在未来这种问题会越来越少的。
这里我对xss漏洞的形式作了一些整理
恶意代码值被作为某一标签的内容显示 (如果输入的是html 则html会被解析)例如你输入用户名 更新后用户名会显示到页面中的某一个标签内 如果你输入的是
popper.w<script src="hack.js" type="text/javajscript"></script>
那么如果不做过滤直接显示到页面, 会引进一个第三方的js 代码并且会执行。
策略:在不需要html输入的地方对html 标签 及一些特殊字符( ” < > 等等 )做过滤,将其转化为不被浏览器解释执行的字符
恶意代码被作为某一标签的属性显示(通过用 “ 将属性截断来开辟新的属性 或恶意方法) 这种情况往往是是开发人员为了实现功能可能会在某些dom标签上记录一些用户输入的信息例如你输入的用户名 会在页面中的标签中以 title 的形式出现 这时候 如果 你输入的是精心设计的内容 那么 看看 这个
<a title="popper.w" onclick="alert(1)">popper.w" onclick="alert(1)</a>
这里我实际上输入的内容是“popper.w” onclick=”alert(1)”,当然你可以在上边写更多的内容。
策略:对属性中可能存在截断的一些字符进行过滤 属性本身存在的 单引号和双引号都需要进行转码。
恶意代码被作为html代码本身显示 (常见的html编辑器) 这种情况存在的问题最多,不再这里举例子了。
策略:最好对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。
恶意代码被作为一段json字符串显示 (通过 变量截断 创造新的 恶意的js 变量 甚至是可执行的代码) 这个问题的关键是用户输入的信息可能会成为页面中js 代码的一部分。
策略:对属性中可能存在截断的一些字符进行过滤 属性本身存在的 单引号和双引号都需要进行转码。
对于crsf 和cookie 劫持
特点 隐蔽性比较高 有些时候是先利用xss 漏洞 然后再做 欺骗的
策略
通过 referer、token 或者 验证码 来检测用户提交。
尽量不要在页面的链接中暴漏任何与用户唯一号(用户id)有关的信息。
对于用户修改 删除 提交的操作最好都使用post 操作 。
避免全站通用的cookie 严格的设置cookie的域。
ok 就写到这里~
上边讲的都是一些比较常见的安全问题,主要是从js hack 方面来讲的,随着前端技术的不断发展进步,更多的安全问题可能会展现在我们面,对于开发者来说大多数的问题是可以在开发阶段避免的,所以可怕的不是hack 可怕的是我们对自己的产品安全的松懈