2017-01-27 11 views

ответ

-1

жаль не отвечаю на это раньше.

1-й сценарий, как показано ниже

<%@ Language="VBScript" %> 
<% 
' List script 
'Option Explicit 
%> 
<% 
response.ContentType="text/xml" 
response.Expires = -1 

Dim objCon, objCom, objRS 
Dim strDNSDomain, strBase, strQuery, strFilter, strAttributes 
Dim sFirstName: sFirstName = request.querystring("f") 
Dim sLastName: sLastName = request.querystring("l") 
Dim sSearchparam: sSearchparam = request.querystring("searchparam") 
Dim strPage: strPage = request.querystring("page") 

' Define the AD OU that contains our users and filter and attributes 
strBase = "<LDAP://server.com/DC=server,DC=com>" 
strFilter = "(&(objectCategory=person)(objectClass=user)(givenName=" & sFirstName & "*)(sn=" & sLastName & "*)(telephonenumber=*))" 
strAttributes = "givenName,sn,displayName,telephonenumber,mobile,c" 

' Make AD connection and run query 
Set objCon = Server.CreateObject("ADODB.Connection") 
objCon.provider ="ADsDSOObject" 
objCon.Properties("User ID") = "DOMAIN\USERNAME" 
objCon.Properties("Password") = "PASSWORD" 
objCon.Properties("Encrypt Password") = TRUE 
objCon.open "Active Directory Provider" 
Set objCom = CreateObject("ADODB.Command") 
Set objCom.ActiveConnection = objCon 

strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
objCom.CommandText = strQuery 
objCom.Properties("Sort On") = "displayName" 

Set objRS = objCom.Execute 
'''''''''' 
' Loop over returned recordset and output HTML 

response.write ("<CiscoIPPhoneDirectory>") 
response.write ("<Title>Phone Directory</Title><Prompt>Search Results</Prompt>") 
''''' 

If objRS.RecordCount <=30 then 
while not objRS.EOF 
    response.write ("<DirectoryEntry>") 
    response.write ("<Name>" & objRS("displayName") & " " & objRS("c") & "</Name>") 
    response.write ("<Telephone>" & objRS("telephonenumber") & "</Telephone>") 
    response.write ("</DirectoryEntry>") 
    objRS.MoveNext 
    Response.Flush 
wend 

response.write ("<SoftKeyItem><Name>Dial</Name><URL>SoftKey:Dial</URL><Position>1</Position></SoftKeyItem>") 
response.write ("<SoftKeyItem><Name>Exit</Name><URL>SoftKey:Exit</URL><Position>4</Position></SoftKeyItem>") 

Else 

If strPage = "" then strPage = 1 
objRS.absoluteposition = 30 * strPage - 29 
For intRecord = 1 to 30 
    response.write ("<DirectoryEntry>") 
    response.write ("<Name>" & objRS("displayName") & " " & objRS("c") & "</Name>") 
    response.write ("<Telephone>" & objRS("telephonenumber") & "</Telephone>") 
    response.write ("</DirectoryEntry>") 
    objRS.MoveNext 
    Response.Flush 
    If objRS.EOF then exit for 
next 

response.write ("<SoftKeyItem><Name>Dial</Name><URL>SoftKey:Dial</URL><Position>1</Position></SoftKeyItem>") 

if 30 * strPage - 29 > 1 then 
    response.write ("<SoftKeyItem><Name>Prev</Name><URL>http://" & request.servervariables("SERVER_NAME") & ":" & request.servervariables("SERVER_PORT") & request.servervariables("url") & "?page=" & strPage - 1 & "&amp;f=" & sFirstName & "&amp;l=" & sLastName & "&amp;searchparam=" & server.urlencode(sSearchparam) & "</URL><Position>2</Position></SoftKeyItem>") 
end if 

if objRS.RecordCount > strPage * 30 then 
    response.write ("<SoftKeyItem><Name>Next</Name><URL>http://" & request.servervariables("SERVER_NAME") & ":" & request.servervariables("SERVER_PORT") & request.servervariables("url") & "?page=" & strPage + 1 & "&amp;f=" & sFirstName & "&amp;l=" & sLastName & "&amp;searchparam=" & server.urlencode(sSearchparam) & "</URL><Position>3</Position></SoftKeyItem>") 
end if 

response.write ("<SoftKeyItem><Name>Exit</Name><URL>SoftKey:Exit</URL><Position>4</Position></SoftKeyItem>") 

End If 

''''' 
response.write ("</CiscoIPPhoneDirectory>") 

'''''''''' 
' Clean up 
objRS.Close 
objCon.Close 
Set objRS = Nothing 
Set objCon = Nothing 
Set objCom = Nothing 
%> 

ciscophonedirectory будет возвращено число с пробелами.

я добавил 2 переменные

Dim strNumber 
Dim strNumberClean 

и обновленный сценарий, как показано ниже

<%@ Language="VBScript" %> 
<% 
' List script 
'Option Explicit 
%> 
<% 
response.ContentType="text/xml" 
response.Expires = -1 

Dim objCon, objCom, objRS 
Dim strDNSDomain, strBase, strQuery, strFilter, strAttributes 
Dim sFirstName: sFirstName = request.querystring("f") 
Dim sLastName: sLastName = request.querystring("l") 
Dim sSearchparam: sSearchparam = request.querystring("searchparam") 
Dim strPage: strPage = request.querystring("page") 
Dim strNumber 
Dim strNumberClean 

' Define the AD OU that contains our users and filter and attributes 
strBase = "<LDAP://server.com/DC=server,DC=com>" 
strFilter = "(&(objectCategory=person)(objectClass=user)(givenName=" & sFirstName & "*)(sn=" & sLastName & "*)(telephonenumber=*))" 
strAttributes = "givenName,sn,displayName,telephonenumber,mobile,c" 

' Make AD connection and run query 
Set objCon = Server.CreateObject("ADODB.Connection") 
objCon.provider ="ADsDSOObject" 
objCon.Properties("User ID") = "DOMAIN\USERNAME" 
objCon.Properties("Password") = "PASSWORD" 
objCon.Properties("Encrypt Password") = TRUE 
objCon.open "Active Directory Provider" 
Set objCom = CreateObject("ADODB.Command") 
Set objCom.ActiveConnection = objCon 

strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
objCom.CommandText = strQuery 
objCom.Properties("Sort On") = "displayName" 

Set objRS = objCom.Execute 
'''''''''' 
' Loop over returned recordset and output HTML 

response.write ("<CiscoIPPhoneDirectory>") 
response.write ("<Title>Phone Directory</Title><Prompt>Search Results</Prompt>") 
''''' 

If objRS.RecordCount <=30 then 
while not objRS.EOF 
    response.write ("<DirectoryEntry>") 
    response.write ("<Name>" & objRS("displayName") & " " & objRS("c") & "</Name>") 

'Remove spaces in the Telephone Number - 20170127 Louis-Philippe Descamps 
    strNumber = objRS("telephonenumber") 
    strNumberClean = Replace(strNumber," ","",1,-1) 
    response.write ("<Telephone>" & strNumberClean & "</Telephone>") 

    response.write ("</DirectoryEntry>") 
    objRS.MoveNext 
    Response.Flush 
wend 

response.write ("<SoftKeyItem><Name>Dial</Name><URL>SoftKey:Dial</URL><Position>1</Position></SoftKeyItem>") 
response.write ("<SoftKeyItem><Name>Exit</Name><URL>SoftKey:Exit</URL><Position>4</Position></SoftKeyItem>") 

Else 

If strPage = "" then strPage = 1 
objRS.absoluteposition = 30 * strPage - 29 
For intRecord = 1 to 30 
    response.write ("<DirectoryEntry>") 
    response.write ("<Name>" & objRS("displayName") & " " & objRS("c") & "</Name>") 

'Remove spaces in the Telephone Number - 20170127 Louis-Philippe Descamps 
    strNumber = objRS("telephonenumber") 
    strNumberClean = Replace(strNumber," ","",1,-1) 
    response.write ("<Telephone>" & strNumberClean & "</Telephone>") 

    response.write ("</DirectoryEntry>") 
    objRS.MoveNext 
    Response.Flush 
    If objRS.EOF then exit for 
next 

response.write ("<SoftKeyItem><Name>Dial</Name><URL>SoftKey:Dial</URL><Position>1</Position></SoftKeyItem>") 

if 30 * strPage - 29 > 1 then 
    response.write ("<SoftKeyItem><Name>Prev</Name><URL>http://" & request.servervariables("SERVER_NAME") & ":" & request.servervariables("SERVER_PORT") & request.servervariables("url") & "?page=" & strPage - 1 & "&amp;f=" & sFirstName & "&amp;l=" & sLastName & "&amp;searchparam=" & server.urlencode(sSearchparam) & "</URL><Position>2</Position></SoftKeyItem>") 
end if 

if objRS.RecordCount > strPage * 30 then 
    response.write ("<SoftKeyItem><Name>Next</Name><URL>http://" & request.servervariables("SERVER_NAME") & ":" & request.servervariables("SERVER_PORT") & request.servervariables("url") & "?page=" & strPage + 1 & "&amp;f=" & sFirstName & "&amp;l=" & sLastName & "&amp;searchparam=" & server.urlencode(sSearchparam) & "</URL><Position>3</Position></SoftKeyItem>") 
end if 

response.write ("<SoftKeyItem><Name>Exit</Name><URL>SoftKey:Exit</URL><Position>4</Position></SoftKeyItem>") 

End If 

''''' 
response.write ("</CiscoIPPhoneDirectory>") 

'''''''''' 
' Clean up 
objRS.Close 
objCon.Close 
Set objRS = Nothing 
Set objCon = Nothing 
Set objCom = Nothing 
%> 

это, кажется, сделали свое дело.

номер возвращаемого каталога больше не имеет пробелов.

благодаря

+0

** Не шифровать пароли **, когда злоумышленник получает DB он будет также получить ключ шифрования. Итерацию над HMAC со случайной солью в течение приблизительно 100 мс и сохранение соли с хешем. Используйте такие функции, как password_hash, PBKDF2, Bcrypt и аналогичные функции. Дело в том, чтобы заставить злоумышленника потратить много времени на поиск паролей грубой силой. Учтите, что именно пользователи подвержены риску плохого обращения с паролями. – zaph

+0

благодарит за комментарий. не знаю, как это сделать, но посмотрим. cheers –

+0

@ Выясните себе: «Является ли безопасность пользователей правильной проверкой правильности обработки паролей?» Вот что происходит: злоумышленник получает доступ к имени вашего сайта/паролям, и вы даже этого не знаете. Злоумышленник использовал их для доступа к учетным записям пользователя в других системах, поскольку большинство пользователей повторно используют пароли. Или он объединяет украденные верительные грамоты с другими и продает затем на темной паутине. – zaph

0

С ограниченной информации по этому вопросу, я предполагаю, что вы хотите, чтобы лишить пространства с номером телефона результаты, которые вы получите.

В качестве альтернативы, если вы хотите получить дополнительную информацию о фильтровальных изменениях, смотрите здесь:

https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

Set rootDSE = GetObject("LDAP://RootDSE") 
base = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">" 
strFilter = "(&(objectCategory=person)(objectClass=user)(givenName=" & sFirstName & "*)(sn=" & sLastName & "*)(telephonenumber=*)" 
attr = "telephoneNumber" 

Set conn = CreateObject("ADODB.Connection") 
conn.Provider = "ADsDSOObject" 
conn.Open "Active Directory Provider" 

Set cmd = CreateObject("ADODB.Command") 
Set cmd.ActiveConnection = conn 
cmd.CommandText = base & ";" & fltr & ";" & attr & ";" 

Set rs = cmd.Execute 
Do Until rs.EOF 
    WScript.Echo Replace(rs.Fields("telephoneNumber").Value, " ", "") 
    rs.MoveNext 
Loop 
rs.Close