http://www.superpay.com.tw/2009arts/Article/c/211.html
http://tc.itkee.com/database/detail-1329.html
http://www.ravs.ntct.edu.tw/know/show.asp?QUESTIONID=53
2012年11月12日 星期一
2012年10月31日 星期三
SQL实现模糊搜索,即SQL LIKE 通配符的用法
与任意单字符匹配
% 与包含一个或多个字符的字符串匹配
[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
使用like比较字,加上SQL里的通配符,请参考以下:
a.. LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
% 与包含一个或多个字符的字符串匹配
[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
使用like比较字,加上SQL里的通配符,请参考以下:
a.. LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
b.. LIKE '%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、
Stringer)。
Stringer)。
c.. LIKE '%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、
Green、McBadden)。
Green、McBadden)。
d.. LIKE '_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、
Sheryl)。
Sheryl)。
e.. LIKE '[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson
(如 Carson)。
(如 Carson)。
f.. LIKE '[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字
母开头的所有名称(如 Ringer)。
母开头的所有名称(如 Ringer)。
g.. LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如
MacFeather)。
MacFeather)。
例子:
WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,Jim、Tim)。
WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。
WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。
WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J 或 T 开始的名字(即仅有 Jim 和 Tim)
WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。
C#正则表达式语法规则
正则表达式通常包含字母文本(Literal text)和元字符(metacharacter)
字母文本指的是普通文本如"abcde"可匹配字符串中任何包含"abcde"的字符串。
字母文本指的是普通文本如"abcde"可匹配字符串中任何包含"abcde"的字符串。
元字符则更加灵活运用通用的表达式匹配所有符合此表达式规律的字符串。
一、匹配单个字符
[ ]——从中选择一个字符匹配
[ ]——从中选择一个字符匹配
中间支持的类型:单词字符([ae])、非单词字符([!?,;@#$*])、字母范围([A-Z])、数字范围([0])
eg. 正则表达式 可匹配字符串
[ae]ffect affect,effect
[ae]ffect
(此例中"[ae]"为元字符,"ffect"为字母文本)
注意:1.要在字符类中匹配连字符,那么把连字符号作为第一个字符列出即可。
^——排除某些字符(在[ ]中表此意,还可表示字符串的开头)
eg. 正则表达式 可匹配字符串 不可匹配字符串
m[^a]t met,mit,m&t…… mat
m[^a]t
二、匹配特殊字符
可以使用的特殊字符:
\t ——匹配制表符
\r ——匹配硬回车符
\f ——匹配换页符
\n——匹配换行符
描述表示字符类的元字符:
\r ——匹配硬回车符
\f ——匹配换页符
\n——匹配换行符
描述表示字符类的元字符:
. ——匹配任何除了\n以外的字符(或者在单行模式中的任何字符)
\w ——匹配任何单词字符(任何字母或数字)
\W ——匹配任何非单词字符(除了字母和数字以外的任何字符)
\s ——匹配任何空白字符(包括空格、换行、制表符等)
\S ——匹配任何非空白字符(除了空格、换行、制表符等的任何字符)
\d ——匹配任何数字字符(0~9的数字)
\D——匹配任何非数字字符(除了0~9以外的任何字符)
表示字符串中字符位置:
^ ——匹配字符串的开头(或者多行模式下行的开头)。
$ ——匹配字符串的结尾,或者是字符串结尾“\n”之前的最后一个字符,或者是多行模式中的行结尾。
\A——匹配字符串的开头(忽略多行模式)
\Z——匹配字符串的结尾或字符串结尾“\n”之前的最后一个字符(忽略多行模式)。
\z——匹配字符串的结尾。
\G——匹配当前搜索开始的位置。
\b——匹配单词的边界。
\B——匹配单词的非边界。
注意:
\w ——匹配任何单词字符(任何字母或数字)
\W ——匹配任何非单词字符(除了字母和数字以外的任何字符)
\s
\S ——匹配任何非空白字符(除了空格、换行、制表符等的任何字符)
\d ——匹配任何数字字符(0~9的数字)
\D——匹配任何非数字字符(除了0~9以外的任何字符)
表示字符串中字符位置:
^ ——匹配字符串的开头(或者多行模式下行的开头)。
$ ——匹配字符串的结尾,或者是字符串结尾“\n”之前的最后一个字符,或者是多行模式中的行结尾。
\A——匹配字符串的开头(忽略多行模式)
\Z——匹配字符串的结尾或字符串结尾“\n”之前的最后一个字符(忽略多行模式)。
\z——匹配字符串的结尾。
\G——匹配当前搜索开始的位置。
\b——匹配单词的边界。
\B——匹配单词的非边界。
注意:
1.句点字符(.)特别有用。可以用它来表示任何一个字符。
eg. 正则表达式 可匹配字符串
01.17.84 01/17/84 , 01-17-84 , 01 17 84 , 01.17.84
01.17.84
eg. 正则表达式 可匹配字符串 不可匹配字符串
\blet\b let letter,hamlet
\blet\b
3.\A和\z在确保字符串所包含的是某个表达式,而不是其他内容时很用。
eg.要判断Text控件是否包含单词"sophia",而不含任何额外的字符、换行符或者空白。
\Asophia\z
4.句点字符( . )具有特殊的含义,若要表示字母字符本身的含义,在前面加一个反斜杠:\.
三、匹配而选一的字符序列
|——匹配二选一
eg. 正则表达式 可匹配字符串
col(o|ou)r color,colour
col(o|ou)r
注意: \b(bill|ted)和\bbill|ted是不同的。
四、用量词匹配
* ——匹配0次或多次
+ ——匹配1次或多次
? ——匹配0次或1次
{n} ——恰好匹配n次
{n,} ——至少匹配n次
{n,m}——至少匹配n次,但不多于m次
eg. 正则表达式 可匹配字符串
brothers? brother,brothers
*
+
?
{n}
{n,}
{n,m}——至少匹配n次,但不多于m次
eg.
brothers?
eg. 正则表达式 可匹配字符串
\bp\d{3,5}\b 以p开头,且后跟3~5个数字结尾
\bp\d{3,5}\b
注意:也可以把量词与()一起使用,以便把该量词应用到整个字母序列。
eg. 正则表达式 可匹配字符串
(The)?school is beautiful. school is beautiful,The school is beautiful.
(The)?school is beautiful.
五、识别正则表达式和贪婪
有些量词是贪婪的(greedy).他们会尽可能多的匹配字符。
有些量词是贪婪的(greedy).他们会尽可能多的匹配字符。
如量词* 匹配0个或多个字符。假设要匹配字符串中任何HTML标签。你可能会用如下正则表达式:
<.*>
现有字符串A <i>quantifier</i> can be <big> greedy</big>
结果<.*>把 <i>quantifier</i> can be <big> greedy</big>都匹配上了。
要解决该问题,需要与量词一起使用一个特殊的非贪婪字符“?”,因此表达式变化如下:
<.*?>
这样就可以正确匹配<i>、</i>、<big>、</big>。
?能强制量词尽可能少地匹配字符,?还可以用在以下几个量词中:
*? ——非贪婪的量词*
+? ——非贪婪的量词+
?? ——非贪婪的量词?
{n}? ——非贪婪的量词{n}
{n,}? ——非贪婪的量词{n,}
{n,m}?——非贪婪的量词{n,m}
六、捕获和反向引用
捕获组(capture group)就像是正则表达式中的变量。捕获组可以捕获正则表达式中的字符模式,并且由正则表达式后面的编号或名称来引用改模式。
+?
??
{n}?
{n,}?
{n,m}?——非贪婪的量词{n,m}
六、捕获和反向引用
捕获组(capture group)就像是正则表达式中的变量。捕获组可以捕获正则表达式中的字符模式,并且由正则表达式后面的编号或名称来引用改模式。
( ) ——用来捕获其中的字符串
\数字——用编号来引用
eg.
正则表达式 可匹配字符串
(\w)(\w)\2\1 abba
(\w)(\w)\2\1
注意:1.反向引用用来匹配html标签非常有效如<(\w+)></\1>可以匹配<table></table>等类似格式的标签。
(?<捕获组名称>)\k<捕获组名称>——用名称来引用
eg.
正则表达式 可匹配字符串
(?<sophia>\w)abc\k<sophia> xabcx
(?<sophia>\w)abc\k<sophia>
注意:在替换模式中使用捕获组的格式略有不同,要用$1、$2等来按数值引用捕获,用${sophia}等名称来按名称引用捕获组
七、设置正则表达式的选项
eg.
string str = "<h4>sophia</h4>"
RegEx objRegEx = new RegEx("<h(d)>(.*?)</h1>");
Response.Write(objRegEx.Replace(str,"<font size = $1>$2</font>"));
Response.Write(objRegEx.Replace(str,"<font size = $1>$2</font>"));
i ——所执行的匹配是不区分大小写的(.net中的属性为IgnoreCase)
m——指定多行模式(.net中的属性为Multiline)
n ——只捕获显示命名或编号的组(.net中的属性为ExplicitCapture)
c ——编译正则表达式,这样会产生较快的执行速度,但启动会变慢(.net中的属性为Compiled)
s ——指定单行模式(.net中的属性为SingleLine)
x ——消除非转义空白字符和注释(.net中的属性为IgnorePatternWhitespace)
r ——搜索从右到左进行(.net中的属性为RightToLeft)
- ——表示禁用。
eg. (?im-r:sophia) 允许不区分大小写匹配sophia,使用多行模式,但禁用了从右到左的匹配。
m——指定多行模式(.net中的属性为Multiline)
n ——只捕获显示命名或编号的组(.net中的属性为ExplicitCapture)
c ——编译正则表达式,这样会产生较快的执行速度,但启动会变慢(.net中的属性为Compiled)
s ——指定单行模式(.net中的属性为SingleLine)
x ——消除非转义空白字符和注释(.net中的属性为IgnorePatternWhitespace)
r ——搜索从右到左进行(.net中的属性为RightToLeft)
- ——表示禁用。
eg. (?im-r:sophia)
注意:1.m会影响如何解析起始元字符(^)和结束元字符($)。在默认情况^和$只匹配整个字符串的开头,即使字符串包含多行文本。如果启用了m,那么它们就可以匹配每行文本的开头和结尾。
ASP.NET取得網卡MAC地址
详细代码请参考下面,代码多有参考网络,为我所用(客户端)。
using System;
using System.Da ta;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入相应的空间信息
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//此处输入Ip地址,你可以做成接受文本框的值进行查询
Response.Write(GetCustomerMac("192.168.168.242"));
}
//这里是关键函数了
public string GetCustomerMac(string IP)
{
string dirResults="";
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();
psi.FileName = "nbtstat";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-a " + IP;
psi.UseShellExecute = false;
proc = Process.Start(psi);
dirResults = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
//匹配mac地址
Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");
//若匹配成功则返回mac,否则返回找不到主机信息
if (m.ToString() != "")
{
return m.ToString();
}
else
{
return "找不到主机信息";
}
}
}
using System.Da
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入相应的空间信息
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//此处输入Ip地址,你可以做成接受文本框的值进行查询
Response.Write(GetCustomerMac("192.168.168.242"));
}
//这里是关键函数了
public string GetCustomerMac(string IP)
{
string dirResults="";
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();
psi.FileName = "nbtstat";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-a " + IP;
psi.UseShellExecute = false;
proc = Process.Start(psi);
dirResults = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
//匹配mac地址
Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");
//若匹配成功则返回mac,否则返回找不到主机信息
if (m.ToString() != "")
{
return m.ToString();
}
else
{
return "找不到主机信息";
}
}
}
讲到如何取得网卡mac地址,就不得不讲到dos命令:NBTSTAT,下面简单介绍下(客户端):
1. 具体功能
该命令用于显示本地计算机和远程计算机的基于 TCP/IP(NetBT) 协议的 NetBIOS 统计资料、 NetBIOS 名称表和 NetBIOS 名称缓存。 NBTSTAT 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 NBTSTAT 显示帮助。
2. 语法详解
nbtstat [-a remotename] [-A IPaddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]
3. 参数说明
-a remotename 显示远程计算机的 NetBIOS 名称表, 其中, remote name 是远程计算机的 NetBIOS 计算机名称。 NetBIOS 名称表是运行在该计算机上的应用程序使用的 NetBIOS 名称列表。
-A IPaddress 显示远程计算机的 NetBIOS 名称表, 其名称由远程计算机的 IP 地址指定 ( 以小数点分隔 ) 。
-c 显示 NetBIOS 名称缓存内容、 NetBIOS 名称表及其解析的各个地址。
-n 显示本地计算机的 NetBIOS 名称表。 Registered 中的状态表明该名称是通过广播或 WINS ******注册的。
-r 显示 NetBIOS 名称解析统计资料。 在配置为使用 WINS 的 Windows 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。
-R 清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。
-RR 重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。
-s 显示 NetBIOS 客户和******会话,并试图将目标 IP 地址转化为名称。
-S 显示 NetBIOS 客户和******会话,只通过 IP 地址列出远程计算机。
-A IPaddress 显示远程计算机的 NetBIOS 名称表, 其名称由远程计算机的 IP 地址指定 ( 以小数点分隔 ) 。
-c 显示 NetBIOS 名称缓存内容、 NetBIOS 名称表及其解析的各个地址。
-n 显示本地计算机的 NetBIOS 名称表。 Registered 中的状态表明该名称是通过广播或 WINS ******注册的。
-r 显示 NetBIOS 名称解析统计资料。 在配置为使用 WINS 的 Windows 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。
-R 清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。
-RR 重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。
-s 显示 NetBIOS 客户和******会话,并试图将目标 IP 地址转化为名称。
-S 显示 NetBIOS 客户和******会话,只通过 IP 地址列出远程计算机。
Interval 重新显示选择的统计资料,可以中断每个显示之间的 Interval 中指定的秒数。 按Ctrl+C 停止重新显示统计信息。如果省略该参数, NBTSTAT 将只显示一次当前的配置信息。
我们试下它的功能:在DOS窗口下,输入:
nbtstat -a 192.168.168.242
这里的192.168.168.242是我的本机IP,测试中发现呆会的程序并不能取得非本地的mac地址,也就是说只能取得******的网卡mac地址,而不能取得客户端的网卡mac地址,记得以前用一些黑客软件的时候可以办到获取对方的网卡mac地址的,有空研究下。结果如下图:
看到网卡的MAC地址了吧!也就是:
MAC Address = 00-18-F3-A7-E1-56
所以在asp.net中我们也是根据这个原理,先取得指定Ip的所有信息后,再用正则取得我们要的mac地址。
法二 (载自 http://topic.csdn.net/t/20020619/14/815413.html)(******端)
using System.Management; ...
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
Console.WriteLine("MAC address\t{0}", mo["MacAddress"].ToString());
mo.Dispose();
}
}
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
Console.WriteLine("MAC address\t{0}", mo["MacAddress"].ToString());
mo.Dispose();
}
}
如果系统提示找不到名字空间Management,
1. 在Solution Explorer中鼠标右键单击References,选择Add Reference...
2. 此时会弹出Add Reference对话框,选中.NET选项卡。
3. 选中System.Management,点select
4. 点击"OK"。
2. 此时会弹出Add Reference对话框,选中.NET选项卡。
3. 选中System.Management,点select
4. 点击"OK"。
2012年10月15日 星期一
CSS之按比例縮小圖片大小
CSS之按比例縮小圖片大小
用CSS達成這目的很簡單,只要你確定了你圖片所想要的寬度,接下來的事情就是把程式碼輸入到樣式表裡面這樣簡單而已
img {
max-width:550px;
height:inherit;
width:expression(document.body.clientWidth>550?"550px""auto");/*若圖片大於550px就調整*/
overflow:hidden; /*超過不顯示*/
}
其中,max-width為圖片最大寬度,底下的數值皆以此為準修改就可以了~
20110129補充:
如果不考慮 IE 6 的話,expression 那行其實可以去掉
而且有那行的話,等於只要用 IE 看還是多了一行 JS ...XD
img{
max-width:590px;
width:expression(this.width>590?"590px":this.width);
max-height:590px;
height:expression(this.height>590?"590px":this.height);
}
而且有那行的話,等於只要用 IE 看還是多了一行 JS ...XD
img{
max-width:590px;
width:expression(this.width>590?"590px":this.width);
max-height:590px;
height:expression(this.height>590?"590px":this.height);
}
2012年10月12日 星期五
網站安全檢測
360 http://webscan.360.cn/index/checkwebsite?url=www.grassstudio.com.tw%2F
諾頓 .http://safeweb.norton.com/
URL VOID http://www.urlvoid.com/
網站上線前,是否只要功能正常運作就算是通過測試?也許在10年或20年前是這樣,但在今日僅是功能正常運作是不夠的,安全性的評估有時比功能正常運作更加重要。當我們使用網站搜尋功能尋找「Mary」時,系統會正常找出「Mary」的相關資訊,good!但是當我們搜尋「Mary’or 1=1」的時候,系統會幫我們找出甚麼呢?網站的漏洞往往就在這些非預期的情況下產生,如果只靠傳統的程式邏輯去尋找這些漏洞的話,恐怕略顯不足,畢竟這些漏洞大部分是在「非預期」的情況下產生的。
此外,隨著網站越來越多元化,內容或資訊都會不定期更新,而每個新增的頁面或連結,都有可能帶來新的漏洞,因此,網站的安全性檢測不論在上線前或是每次更新時,都是務必檢查的工作。
但是手動的網站檢測,對使用者而言是很大的負擔,尤其以目前網站動輒數百至數千頁,以人工方式對每一頁進行澈底的安全檢測近乎不可能,此時,方便而自動化的檢測工具就很重要了。以下介紹幾套好用、便利及自動化檢測的免費工具,使用者可以自行上網下載使用,對網站安全進行基本的檢查,降低網站被入侵的風險。
二、工具介紹
˙Paros
Paros是一套使用JAVA語言撰寫成的網頁代理伺服器型檢測工具。Paros啟動之後,使用者只需將代理伺服器指向Paros,使得接下來瀏覽網頁的資訊皆可被Paros中斷與記錄,讓使用者可對HTTP/HTTPS所傳送與接收的內容觀看或修改,亦可找出POST等方法所傳送的資料格式,非常便於網站測試。此外,Paros也提供爬尋(spider)網站的功能,可完整取得網站之樹狀結構,並對找出來的頁面進行XSS、SQL Injection及資訊揭露與不適當錯誤處置等基本網頁弱點進行掃描。整體來說,Paros是一套以網頁代理伺服器型的檢測工具,功能性可說是非常完整,其操作畫面詳見圖1,但比較可惜的是此軟體已有一段時間沒有進行更新,目前最新的版本仍是2006年8月8日所公布的3.2.13版。
https://sites.google.com/site/gappstutor/news/yiparossaomiaowebchengshiloudong
˙Burp Suite
Burp Suite 也是一套JAVA語言撰寫成的網頁代理伺服器型檢測工具,使用的方法和Paros類似,但在功能上Burp Suite卻有其獨特處。使用者將代理伺服器指向Burp Suite,使用爬尋功能取得網站樹狀結構之後,即可將找到的頁面送至Burp Suite中其他如掃描(Scanner)、入侵(Intruder)或重複註冊檢測(Repeater)等功能,其中掃描可檢測XSS、SQL Injection等弱點,而重複註冊檢測則能測試網站是否可防範大量註冊或灌票等弱點。此外,入侵功能可說是Burp Suite最強大的功能之一,可以對特定頁面傳送大量不同的參數,並觀察特定回傳欄位的變化,對於暴力破解密碼或Blind SQL Injection的檢測都非常好用。唯一美中不足的地方是,免費版的Burp Suite不支援或只有部分支援某些功能(如免費版的入侵功能測試速度較慢),但其基本功能足以完成很多的網站弱點測試,因此在從事網站檢測時,仍是一套非常好用的工具。Burp Suite畫面詳見圖2。
http://dinowang.blogspot.tw/2010/04/first-use-of-burp-suite-for.html
圖1 Paros畫面(資料來源:自行整理)
圖2 Burp Suite畫面(資料來源:自行整理)
˙Grendel-Scan
Grendel-Scan工具是一套自動化圖形介面的網站安全性檢測工具,可運行在Windows及Macintosh作業系統上,並提供Source Code下載。Grendel-Scan可以檢測相當完整的弱點,包含檔案列舉(File Enumeration)、資訊洩漏(Information Leakage)、連線管理(Session Management)、XSS、惡意攻擊(Miscellaneous Attacks)、應用程式架構(Application Architecture)、網站設定(Web Server Configuration)及SQL Injection等弱點分項,使用者可對每一分項再就需要檢測的項目進行細部調整。此外Grendel-Scan亦具備網站爬尋功能,因此在檢測時只需提供起始頁面,即可取得網站樹狀結構並對每一頁面自動檢測。Grendel-Scan也具備了許多其他好用的功能,例如:選擇是否使用代理伺服器進行檢測、選擇不同的報告輸出格式、設定檢測速度、預先設定須登入頁面之帳號密碼,及設定檢測時URL之黑名單與白名單等,這些都是在從事網頁檢測時非常方便的功能。Grendel-Scan畫面詳見圖3。
˙Nikto
Nikto工具是一款能對網站伺服器執行多種安全測試的自動化掃描軟體,與其他工具不同的是,Nikto為文字介面之檢測工具,在操作上或許沒有其他工具那麼直覺,但也不算困難,可在命令提示字元下輸入nikto.pl –Help,即可顯示詳細的操作說明。Nitko可對伺服器進行全面掃描,包含超過3,500種具有潛在危險的文件或CGI檔案、超過900種伺服器版本問題及逾250種特定伺服器問題。此外,Nikto的掃描項目和外掛程式仍在持續更新,只須在命令提示字元下輸入nikto.pl –update,即可至Nikto官網下載最新套件進行更新。Nikto具有另一項特色為掃描速度快,可在最短時間內對網站伺服器相關的不安全設定、錯誤的配置及久未更新之過時軟體進行偵測,是網站檢測時一個很方便的利器。Nikto畫面詳見圖4。
圖3 Grendel-Scan畫面(資料來源:自行整理)
圖4 Nikto畫面(資料來源:自行整理)
˙Nessus
Nessus是一套非常有名的網站伺服器檢測工具,由於是圖型化界面,因此在操作上非常便利。比較特別的是Nessus在使用上需要事先安裝Nessus Server與Nessus Client,檢測的過程則是由Nessus Client連至Nessus Server,再透過Nessus Server對目標網站進行檢測。Nessus可幫助系統管理者檢測系統主機的弱點所在,讓系統管理者對弱點處進行修正與防護,降低遭受入侵之風險。此外,Nessus 可以更新外掛模組(Plugins),提升軟體功能與增進檢測能力。但是由於Nessus過於有名,目前大部分的網路防護設備都會對Nessus的測試加以阻擋,因此為了達到較高的檢測準確率,一般是建議將Nessus掃描主機至於網站伺服器同一網段進行檢測。Nessus畫面詳見圖5與圖6。
圖5 Nessus Server畫面(資料來源:自行整理)
圖6 Nessus Client畫面(資料來源:自行整理)
三、結論
˙Paros
承上所言,現在網站都如此龐大,因此本文介紹了5套常用的網站檢測工具,提供一般的網站/網頁管理人員對網站安全進行基本的檢測。但是比檢測更重要的就是修復,否則找出漏洞卻不修復的話,就完全失去了檢測的意義。通常漏洞修補之後,應該再進行複測的動作,以確保漏洞被正確修復,或驗證是否還有新的漏洞產生。透過不斷地檢測與修復循環後,即可降低網站被入侵的風險。此外,網站安全並不是只作一次檢測即代表永久安全,應要安排定期檢測或每次網站更新時執行檢測,將網站的安全性保持在一定水平。
另外,使用電腦與網路的民眾應該要有一個基本觀念—「絕對沒有百分之百的安全性」,因此,即使運用了本文所介紹的工具,甚或更多的工具,也不能保證網站是絕對安全的。雖然愈是全面地檢測愈是煩瑣,但是努力一定會有收穫的。藉由本文5套基本網站檢測工具拋磚引玉地介紹,希望能提供網站/網頁管理人員強化網站的安全性,降低遭受攻擊的風險,「一同努力、一份心力,共同提高網站安全性!」
資料來源:國家資通安全會報技術服務中心
諾頓 .http://safeweb.norton.com/
URL VOID http://www.urlvoid.com/
這套軟體的名稱是websecurify,他們標榜的是web and web 2.0 security,目前提供了windows、mac os和linux三種平台的版本,如果你也有興趣也可以下載原始碼回來研究。
一、前言 網站上線前,是否只要功能正常運作就算是通過測試?也許在10年或20年前是這樣,但在今日僅是功能正常運作是不夠的,安全性的評估有時比功能正常運作更加重要。當我們使用網站搜尋功能尋找「Mary」時,系統會正常找出「Mary」的相關資訊,good!但是當我們搜尋「Mary’or 1=1」的時候,系統會幫我們找出甚麼呢?網站的漏洞往往就在這些非預期的情況下產生,如果只靠傳統的程式邏輯去尋找這些漏洞的話,恐怕略顯不足,畢竟這些漏洞大部分是在「非預期」的情況下產生的。
此外,隨著網站越來越多元化,內容或資訊都會不定期更新,而每個新增的頁面或連結,都有可能帶來新的漏洞,因此,網站的安全性檢測不論在上線前或是每次更新時,都是務必檢查的工作。
但是手動的網站檢測,對使用者而言是很大的負擔,尤其以目前網站動輒數百至數千頁,以人工方式對每一頁進行澈底的安全檢測近乎不可能,此時,方便而自動化的檢測工具就很重要了。以下介紹幾套好用、便利及自動化檢測的免費工具,使用者可以自行上網下載使用,對網站安全進行基本的檢查,降低網站被入侵的風險。
二、工具介紹
˙Paros
Paros是一套使用JAVA語言撰寫成的網頁代理伺服器型檢測工具。Paros啟動之後,使用者只需將代理伺服器指向Paros,使得接下來瀏覽網頁的資訊皆可被Paros中斷與記錄,讓使用者可對HTTP/HTTPS所傳送與接收的內容觀看或修改,亦可找出POST等方法所傳送的資料格式,非常便於網站測試。此外,Paros也提供爬尋(spider)網站的功能,可完整取得網站之樹狀結構,並對找出來的頁面進行XSS、SQL Injection及資訊揭露與不適當錯誤處置等基本網頁弱點進行掃描。整體來說,Paros是一套以網頁代理伺服器型的檢測工具,功能性可說是非常完整,其操作畫面詳見圖1,但比較可惜的是此軟體已有一段時間沒有進行更新,目前最新的版本仍是2006年8月8日所公布的3.2.13版。
https://sites.google.com/site/gappstutor/news/yiparossaomiaowebchengshiloudong
˙Burp Suite
Burp Suite 也是一套JAVA語言撰寫成的網頁代理伺服器型檢測工具,使用的方法和Paros類似,但在功能上Burp Suite卻有其獨特處。使用者將代理伺服器指向Burp Suite,使用爬尋功能取得網站樹狀結構之後,即可將找到的頁面送至Burp Suite中其他如掃描(Scanner)、入侵(Intruder)或重複註冊檢測(Repeater)等功能,其中掃描可檢測XSS、SQL Injection等弱點,而重複註冊檢測則能測試網站是否可防範大量註冊或灌票等弱點。此外,入侵功能可說是Burp Suite最強大的功能之一,可以對特定頁面傳送大量不同的參數,並觀察特定回傳欄位的變化,對於暴力破解密碼或Blind SQL Injection的檢測都非常好用。唯一美中不足的地方是,免費版的Burp Suite不支援或只有部分支援某些功能(如免費版的入侵功能測試速度較慢),但其基本功能足以完成很多的網站弱點測試,因此在從事網站檢測時,仍是一套非常好用的工具。Burp Suite畫面詳見圖2。
http://dinowang.blogspot.tw/2010/04/first-use-of-burp-suite-for.html
圖1 Paros畫面(資料來源:自行整理)
圖2 Burp Suite畫面(資料來源:自行整理)
˙Grendel-Scan
Grendel-Scan工具是一套自動化圖形介面的網站安全性檢測工具,可運行在Windows及Macintosh作業系統上,並提供Source Code下載。Grendel-Scan可以檢測相當完整的弱點,包含檔案列舉(File Enumeration)、資訊洩漏(Information Leakage)、連線管理(Session Management)、XSS、惡意攻擊(Miscellaneous Attacks)、應用程式架構(Application Architecture)、網站設定(Web Server Configuration)及SQL Injection等弱點分項,使用者可對每一分項再就需要檢測的項目進行細部調整。此外Grendel-Scan亦具備網站爬尋功能,因此在檢測時只需提供起始頁面,即可取得網站樹狀結構並對每一頁面自動檢測。Grendel-Scan也具備了許多其他好用的功能,例如:選擇是否使用代理伺服器進行檢測、選擇不同的報告輸出格式、設定檢測速度、預先設定須登入頁面之帳號密碼,及設定檢測時URL之黑名單與白名單等,這些都是在從事網頁檢測時非常方便的功能。Grendel-Scan畫面詳見圖3。
˙Nikto
Nikto工具是一款能對網站伺服器執行多種安全測試的自動化掃描軟體,與其他工具不同的是,Nikto為文字介面之檢測工具,在操作上或許沒有其他工具那麼直覺,但也不算困難,可在命令提示字元下輸入nikto.pl –Help,即可顯示詳細的操作說明。Nitko可對伺服器進行全面掃描,包含超過3,500種具有潛在危險的文件或CGI檔案、超過900種伺服器版本問題及逾250種特定伺服器問題。此外,Nikto的掃描項目和外掛程式仍在持續更新,只須在命令提示字元下輸入nikto.pl –update,即可至Nikto官網下載最新套件進行更新。Nikto具有另一項特色為掃描速度快,可在最短時間內對網站伺服器相關的不安全設定、錯誤的配置及久未更新之過時軟體進行偵測,是網站檢測時一個很方便的利器。Nikto畫面詳見圖4。
圖3 Grendel-Scan畫面(資料來源:自行整理)
圖4 Nikto畫面(資料來源:自行整理)
˙Nessus
Nessus是一套非常有名的網站伺服器檢測工具,由於是圖型化界面,因此在操作上非常便利。比較特別的是Nessus在使用上需要事先安裝Nessus Server與Nessus Client,檢測的過程則是由Nessus Client連至Nessus Server,再透過Nessus Server對目標網站進行檢測。Nessus可幫助系統管理者檢測系統主機的弱點所在,讓系統管理者對弱點處進行修正與防護,降低遭受入侵之風險。此外,Nessus 可以更新外掛模組(Plugins),提升軟體功能與增進檢測能力。但是由於Nessus過於有名,目前大部分的網路防護設備都會對Nessus的測試加以阻擋,因此為了達到較高的檢測準確率,一般是建議將Nessus掃描主機至於網站伺服器同一網段進行檢測。Nessus畫面詳見圖5與圖6。
圖5 Nessus Server畫面(資料來源:自行整理)
圖6 Nessus Client畫面(資料來源:自行整理)
三、結論
˙Paros
承上所言,現在網站都如此龐大,因此本文介紹了5套常用的網站檢測工具,提供一般的網站/網頁管理人員對網站安全進行基本的檢測。但是比檢測更重要的就是修復,否則找出漏洞卻不修復的話,就完全失去了檢測的意義。通常漏洞修補之後,應該再進行複測的動作,以確保漏洞被正確修復,或驗證是否還有新的漏洞產生。透過不斷地檢測與修復循環後,即可降低網站被入侵的風險。此外,網站安全並不是只作一次檢測即代表永久安全,應要安排定期檢測或每次網站更新時執行檢測,將網站的安全性保持在一定水平。
另外,使用電腦與網路的民眾應該要有一個基本觀念—「絕對沒有百分之百的安全性」,因此,即使運用了本文所介紹的工具,甚或更多的工具,也不能保證網站是絕對安全的。雖然愈是全面地檢測愈是煩瑣,但是努力一定會有收穫的。藉由本文5套基本網站檢測工具拋磚引玉地介紹,希望能提供網站/網頁管理人員強化網站的安全性,降低遭受攻擊的風險,「一同努力、一份心力,共同提高網站安全性!」
資料來源:國家資通安全會報技術服務中心
随着 Web 应用越来越广泛,Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web 服务程序的 SQL 注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这也使得越来越多的用户关注应用层的安全问题,对 Web 应用安全的关注度也逐渐升温。下面向大家推荐8款非常有用的免费 Web 安全测试工具。
N-Stalker Web 应用程序安全2012免费版本能够为您的 Web 应用程序清除该环境中大量常见的漏洞,包括跨站脚本(XSS)、SQL 注入(SQL injection)、缓存溢出(Buffer Overflow)、参数篡改 (Parameter Tampering)等等。
Netsparker Community Edition 是一款 SQL 注入扫描工具,是Netsparker的社区免费版本,提供了基本的漏洞检测功能。使用友好,灵活。
Websecurify 是一款开源的跨平台网站安全检查工具,能够帮助你精确的检测 Web 应用程序安全问题。
Wapiti 是 Web 应用程序漏洞检查工具。它具有“暗箱操作”扫描,即它不关心 Web 应用程序的源代码,但它会扫描网页的部署,寻找使其能够注入数据的脚本和格式。
Skipfish 是 Google 公司发布的一款自动 Web 安全扫描程序,以降低用户的在线安全威胁。和 Nikto 和 Nessus 等其他开源扫描工具有相似的功能。
Exploit-Me 是一套 Firefox 的 Web 应用程序安全测试工具,轻量,易于使用。
WebScarab 一个用来分析使用HTTP和HTTPS协议的应用程序框架,通过记录它检测到的会话内容(请求和应答)来帮助安全专家发现潜在的程序漏洞。
x5s 是一款 Fiddler 插件,用于辅助渗透测试人员发现跨站点脚本(XSS)漏洞。
2012年10月11日 星期四
response.write 问题 - .NET技术 / ASP.NET
http://dotnet.ygman.com/thread/248764
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (0 == RebootAXIS(MachineIp.Ip))
{
//MessageBox.Show("Reboot successfully.");
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ks", "alert('Reboot successfully.')", true);
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ks", "alert('Failed to reboot the DVS.')", true);
}
http://e-stickynotes.blogspot.tw/2010/04/aspnet-messagebox.html
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (0 == RebootAXIS(MachineIp.Ip))
{
//MessageBox.Show("Reboot successfully.");
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ks", "alert('Reboot successfully.')", true);
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ks", "alert('Failed to reboot the DVS.')", true);
}
http://e-stickynotes.blogspot.tw/2010/04/aspnet-messagebox.html
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, typeof(UpdatePanel), "test", "alert('保存成功!');", true);
2012年9月10日 星期一
2012年9月7日 星期五
2012年8月30日 星期四
ASP.NET身份验证机制membership入门——控件篇
在前面两篇文章里,我们了解了一下如何配置membership以及roleManager,那么配置成功后又该如何应用呢?其实ASP.NET给我们提供了一套登录控件,我们可以使用这套控件,轻松的来完成一些通用的功能,例如:注册,登录等。
2012年8月20日 星期一
.net 后台动态绑定服务器控件 然后再取值问题
http://topic.csdn.net/u/20120806/10/83bbae10-ddbc-48da-9644-e5fba88c3683.html?seed=412713140&r=79329844
CheckBox chk = (CheckBox)this.HtmlDiv.FindControl("cha");
http://topic.csdn.net/u/20080525/15/a8bea36b-2c07-45bc-ba89-7a4da591ea75.html
CheckBox chk = (CheckBox)this.HtmlDiv.FindControl("cha");
http://topic.csdn.net/u/20080525/15/a8bea36b-2c07-45bc-ba89-7a4da591ea75.html
2012年8月3日 星期五
2012年8月1日 星期三
jQuery formValidator表单验证插件ASP.NET示例
jQuery formValidator表单验证插件ASP.NET示例
内容索引:.NET源码,Ajax相关,formValidator
jQuery formValidator是一款不错的表单验证插件,ASP/PHP/ASP.NET平台都可以方便的使用,本实例就是在 ASP.NET环境下的使用formValidator的一个功能演示程序,这其中包含各种表单数据形式的判断,日期选择等。
jQuery formValidator是一款不错的表单验证插件,ASP/PHP/ASP.NET平台都可以方便的使用,本实例就是在 ASP.NET环境下的使用formValidator的一个功能演示程序,这其中包含各种表单数据形式的判断,日期选择等。
訂閱:
文章 (Atom)