GetChars
en las clases Decoder
y Encoding
, y el método GetBytes
en las clases Encoder
y Encoding
de .NET Framework llevan a cabo aritmética de puntero de forma interna en las matrices de caracteres y bytes para convertir un intervalo de caracteres en un intervalo de bytes y viceversa.
out.println("x = " + encoder.encodeForJavaScript(input) + ";");
...
unichar ellipsis = 0x2026;
NSString *myString = [NSString stringWithFormat:@"My Test String%C", ellipsis];
NSData *asciiData = [myString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];
NSLog(@"Original: %@ (length %d)", myString, [myString length]);
NSLog(@"Best-fit-mapped: %@ (length %d)", asciiString, [asciiString length]);
// output:
// Original: My Test String... (length 15)
// Best-fit-mapped: My Test String... (length 17)
...
...
let ellipsis = 0x2026;
let myString = NSString(format:"My Test String %C", ellipsis)
let asciiData = myString.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion:true)
let asciiString = NSString(data:asciiData!, encoding:NSASCIIStringEncoding)
NSLog("Original: %@ (length %d)", myString, myString.length)
NSLog("Best-fit-mapped: %@ (length %d)", asciiString!, asciiString!.length)
// output:
// Original: My Test String ... (length 16)
// Best-fit-mapped: My Test String ... (length 18)
...
MAX_PATH
bytes, aunque debe consultar la documentación de cada función individualmente. Si el búfer no tiene la longitud suficiente como para almacenar el resultado de la manipulación, podría producirse un desbordamiento de búfer.
char *createOutputDirectory(char *name) {
char outputDirectoryName[128];
if (getCurrentDirectory(128, outputDirectoryName) == 0) {
return null;
}
if (!PathAppend(outputDirectoryName, "output")) {
return null;
}
if (!PathAppend(outputDirectoryName, name)) {
return null;
}
if (SHCreateDirectoryEx(NULL, outputDirectoryName, NULL)
!= ERROR_SUCCESS) {
return null;
}
return StrDup(outputDirectoryName);
}
output\<name>
" en el directorio actual y devuelve una copia de su nombre asignada por montón. Para la mayoría de los valores del directorio actual y el parámetro de nombre, esta función funcionará correctamente. Sin embargo, si el parámetro name
es especialmente largo, entonces la segunda llamada a PathAppend()
podría provocar el buffer overflow outputDirectoryName
, que tiene menos de MAX_PATH
bytes.umask()
se confunde habitualmente con el argumento para chmod()
.umask()
comienza por la instrucción falsa:chmod()
, cuando el argumento proporcionado por el usuario especifica los bits para habilitar el archivo concreto, el comportamiento de umask()
es precisamente el contrario: umask()
establece umask en ~mask & 0777
.umask()
continúa para describir el uso correcto de umask()
:open()
utiliza umask para establecer los permisos de archivo iniciales de un archivo recién creado. De forma específica, los permisos de umask se desactivan desde el argumento de modo para open(2)
(de esta forma, por ejemplo, el valor predeterminado umask normal de 022 resultados en los archivos que se están creando con permisos 0666 & ~022 = 0644 = rw-r--r-- en el caso habitual donde se encuentra el modo se especifica como 0666)".
...
struct stat output;
int ret = stat(aFilePath, &output);
// error handling omitted for this example
struct timespec accessTime = output.st_atime;
...
umask()
se confunde habitualmente con el argumento para chmod()
.umask()
comienza por la instrucción falsa:chmod()
, cuando el argumento proporcionado por el usuario especifica los bits para habilitar el archivo concreto, el comportamiento de umask()
es precisamente el contrario: umask()
establece umask en ~mask & 0777
.umask()
continúa para describir el uso correcto de umask()
:transactionId
activo en un archivo temporal del directorio Documentos de la aplicación empleando un método vulnerable:
...
//get the documents directory:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
//make a file name to write the data to using the documents directory:
let fileName = NSString(format:"%@/tmp_activeTrans.txt", documentsPath)
// write data to the file
let transactionId = "TransactionId=12341234"
transactionId.writeToFile(fileName, atomically:true)
...
posted
. FileUpload
es del tipo System.Web.UI.HtmlControls.HtmlInputFile
.
HttpPostedFile posted = FileUpload.PostedFile;
@Controller
public class MyFormController {
...
@RequestMapping("/test")
public String uploadFile (org.springframework.web.multipart.MultipartFile file) {
...
} ...
}
<?php
$udir = 'upload/'; // Relative path under Web root
$ufile = $udir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $ufile)) {
echo "Valid upload received\n";
} else {
echo "Invalid upload rejected\n";
} ?>
from django.core.files.storage import default_storage
from django.core.files.base import File
...
def handle_upload(request):
files = request.FILES
for f in files.values():
path = default_storage.save('upload/', File(f))
...
<input>
del tipo file
indica que el programa acepta la carga de archivos.
<input type="file">
root
han provocado innumerables desastres de seguridad de Unix. Es imprescindible que revise atentamente los programas con privilegios en relación con todos los tipos de problemas de seguridad, pero es igual de importante restablecer los programas con privilegios a un estado sin ellos tan rápido como sea posible a fin de limitar la cantidad de daños que puede provocar una vulnerabilidad que se pasó por alto.root
a otro. root
cuando se desencadena una señal o se ejecuta un subproceso, el controlador de señales funcionará con privilegios raíz. Es posible que un usuario malintencionado aproveche estos privilegios elevados para realizar aún más daño.root
han causado innumerables desastres de seguridad Unix. Es absolutamente necesario que revise cuidadosamente los programas privilegiados para descubrir cualquier tipo de problema de seguridad, pero es igualmente importante que los programas privilegiados vuelvan a un estado no privilegiado tan pronto como sea posible para limitar el daño total que una vulnerabilidad no detectada pueda causar.root
a otro.root
cuando una señal salta o se ejecuta un subproceso, el tratamiento de señales o el subproceso operará con privilegios de origen. Un atacante puede ser capaz de aprovechar estos privilegios avanzados para hacer más daño.root
han provocado innumerables desastres de seguridad de Unix. Es imprescindible que revise atentamente los programas con privilegios en relación con todos los tipos de problemas de seguridad, pero es igual de importante restablecer los programas con privilegios a un estado sin ellos tan rápido como sea posible a fin de limitar la cantidad de daños que puede provocar una vulnerabilidad que se pasó por alto.root
a otro.root
cuando se desencadena una señal o se ejecuta un subproceso, el controlador de señales funcionará con privilegios raíz. Es posible que un atacante aproveche estos privilegios elevados para realizar aún más daño.root
han provocado innumerables desastres de seguridad de Unix. Es imprescindible que revise atentamente los programas con privilegios en relación con todos los tipos de problemas de seguridad, pero es igual de importante restablecer los programas con privilegios a un estado sin ellos tan rápido como sea posible a fin de limitar la cantidad de daños que puede provocar una vulnerabilidad que se pasó por alto.root
a otro.root
cuando se desencadena una señal o se ejecuta un subproceso, el controlador de señales funcionará con privilegios raíz. Es posible que un usuario malintencionado aproveche estos privilegios elevados para realizar aún más daño.sun.misc.Unsafe
. Las funcionalidades de esta clase son intrínsecamente inseguras y solo se puede acceder a ellas previa reflexión.sun.misc.Unsafe
se utiliza para realizar operaciones inseguras de bajo nivel y no está diseñada para que la usen los desarrolladores.Unsafe
solo se puede obtener mediante un código de confianza y normalmente se obtiene a través de la reflexión, ya que se puede usar para corromper el sistema o asignar manualmente memoria en masa que, si no se maneja adecuadamente, podría tener efectos perjudiciales en el sistema. Es absolutamente necesario que toda la funcionalidad alrededor de sun.misc.Unsafe
se revise y pruebe cuidadosamente para que no tenga fallos.Value Stack
de Struts 2. Al permitir que se evalúen expresiones no validadas contrastándolas con la Value Stack
, puede permitir que un atacante acceda y modifique variables del sistema o ejecute un código arbitrario.
OgnlContext ctx = new OgnlContext();
String expression = request.getParameter("input");
Object expr = Ognl.parseExpression(expression);
Object value = Ognl.getValue(expr, ctx, root);
System.out.println("Value: " + value);
(#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc.exe"))
%{expr}
) en una etiqueta Struts que evalúa la expresión OGNL dos veces. Un usuario malintencionado que controlase el resultado de la primera evaluación podría controlar la expresión evaluada en la segunda evaluación OGNL e inyectar expresiones OGNL arbitrarias.redirectAction
evalúa sus parámetros dos veces. En este caso, un usuario malintencionado podría controlar el resultado de la expresión OGNL forzada en el parámetro actionName
mediante un parámetro de solicitud redirect
.
...
<action name="index" class="com.acme.MyAction">
<result type="redirectAction">
<param name="actionName">${#parameters['redirect']}</param>
<param name="namespace">/foo</param>
</result>
</action>
...
%{#parameters['redirect']}
que devuelve una cadena que controla el usuario como una expresión OGNL, lo que permitiría al usuario malintencionado evaluar expresiones OGNL arbitrarias.execute()
. El carácter !
(signo de admiración) o el prefijo method:
se pueden usar en la dirección URL de la acción para invocar cualquier método público en la acción si "Dynamic Method Invocation" está habilitada. En la versión 2.3.20
de Struts 2 el mecanismo para invocar el método alternativo que anteriormente se basaba en la reflexión, se sustituyó por OGNL, lo que permitía a los atacantes proporcionar expresiones OGNL malintencionadas en lugar de un nombre de método alternativo.debug
:console
mostrará una consola de evaluación OGNL que permite a los desarrolladores evaluar cualquier expresión OGNL arbitraria en el servidor.command
permitirá a los desarrolladores enviar expresiones OGNL arbitrarias para su evaluación usando el parámetro de solicitudexpression
.xml
volcará los parámetros, el contexto, la sesión y la pila de valores en un documento XML.browser
volcará los parámetros, el contexto, la sesión y la pila de valores en un documento HTML navegable.dest
cuando un usuario hace clic en el vínculo.
...
DATA: str_dest TYPE c.
str_dest = request->get_form_field( 'dest' ).
response->redirect( str_dest ).
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
...
var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
var strDest:String = String(params["dest"]);
host.updateLocation(strDest);
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".PageReference
que consiste en una URL del parámetro de solicitud dest
.
public PageReference pageAction() {
...
PageReference ref = ApexPages.currentPage();
Map<String,String> params = ref.getParameters();
return new PageReference(params.get('dest'));
}
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
String redirect = Request["dest"];
Response.Redirect(redirect);
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
...
final server = await HttpServer.bind(host, port);
await for (HttpRequest request in server) {
final response = request.response;
final headers = request.headers;
final strDest = headers.value('strDest');
response.headers.contentType = ContentType.text;
response.redirect(Uri.parse(strDest!));
await response.close();
}
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
...
strDest := r.Form.Get("dest")
http.Redirect(w, r, strDest, http.StatusSeeOther)
...
Example 1
redirecciona el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
<end-state id="redirectView" view="externalRedirect:#{requestParameters.dest}" />
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el enlace.
...
strDest = form.dest.value;
window.open(strDest,"myresults");
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
<%
...
$strDest = $_GET["dest"];
header("Location: " . $strDest);
...
%>
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario hace clic en el vínculo.
...
-- Assume QUERY_STRING looks like dest=http://www.wilyhacker.com
dest := SUBSTR(OWA_UTIL.get_cgi_env('QUERY_STRING'), 6);
OWA_UTIL.redirect_url('dest');
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
cuando un usuario haga clic en el vínculo.
...
strDest = request.field("dest")
redirect(strDest)
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
.
...
str_dest = req.params['dest']
...
res = Rack::Response.new
...
res.redirect("http://#{dest}")
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".dest
.
def myAction = Action { implicit request =>
...
request.getQueryString("dest") match {
case Some(location) => Redirect(location)
case None => Ok("No url found!")
}
...
}
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".requestToLoad
para que señale al parámetro "dest" de la URL original, si existe, y a la URL original que usa el esquema http://
, y finalmente carga esta solicitud en una WKWebView:
...
let requestToLoad : String
...
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
...
if let urlComponents = NSURLComponents(URL: url, resolvingAgainstBaseURL: false) {
if let queryItems = urlComponents.queryItems as? [NSURLQueryItem]{
for queryItem in queryItems {
if queryItem.name == "dest" {
if let value = queryItem.value {
request = NSURLRequest(URL:NSURL(string:value))
requestToLoad = request
break
}
}
}
}
if requestToLoad == nil {
urlComponents.scheme = "http"
requestToLoad = NSURLRequest(URL:urlComponents.URL)
}
}
...
}
...
...
let webView : WKWebView
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
webView.loadRequest(appDelegate.requestToLoad)
...
Example 1
intentará solicitar y cargar "http://www.wilyhacker.com" en WKWebView.dest
cuando un usuario hace clic en el vínculo.
...
strDest = Request.Form('dest')
HyperLink.NavigateTo strDest
...
Example 1
redireccionará el explorador a "http://www.wilyhacker.com".
...
var fs:FileStream = new FileStream();
fs.open(new File("config.properties"), FileMode.READ);
var password:String = fs.readMultiByte(fs.bytesAvailable, File.systemCharset);
URLRequestDefaults.setLoginCredentialsForHost(hostname, usr, password);
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
string password = regKey.GetValue(passKey).ToString());
NetworkCredential netCred =
new NetworkCredential(username,password,domain);
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
RegQueryValueEx(hkey,TEXT(.SQLPWD.),NULL,
NULL,(LPBYTE)password, &size);
rc = SQLConnect(*hdbc, server, SQL_NTS, uid,
SQL_NTS, password, SQL_NTS);
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
01 RECORD.
05 UID PIC X(10).
05 PASSWORD PIC X(10).
...
EXEC CICS
READ
FILE('CFG')
INTO(RECORD)
RIDFLD(ACCTNO)
...
END-EXEC.
EXEC SQL
CONNECT :UID
IDENTIFIED BY :PASSWORD
AT :MYCONN
USING :MYSERVER
END-EXEC.
...
CFG
puede leer el valor de la contraseña. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
<cfquery name = "GetCredentials" dataSource = "master">
SELECT Username, Password
FROM Credentials
WHERE DataSource="users"
</cfquery>
...
<cfquery name = "GetSSNs" dataSource = "users"
username = "#Username#" password = "#Password#">
SELECT SSN
FROM Users
</cfquery>
...
master
puede leer el valor de Username
y Password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
file, _ := os.Open("config.json")
decoder := json.NewDecoder(file)
decoder.Decode(&values)
request.SetBasicAuth(values.Username, values.Password)
...
values.Password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
Properties prop = new Properties();
prop.load(new FileInputStream("config.properties"));
String password = prop.getProperty("password");
DriverManager.getConnection(url, usr, password);
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
webview.setWebViewClient(new WebViewClient() {
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
String[] credentials = view.getHttpAuthUsernamePassword(host, realm);
String username = credentials[0];
String password = credentials[1];
handler.proceed(username, password);
}
});
...
...
obj = new XMLHttpRequest();
obj.open('GET','/fetchusers.jsp?id='+form.id.value,'true','scott','tiger');
...
plist
y la utiliza para descomprimir un archivo protegido con contraseña.
...
NSDictionary *dict= [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"]];
NSString *password = [dict valueForKey:@"password"];
[SSZipArchive unzipFileAtPath:zipPath toDestination:destPath overwrite:TRUE password:password error:&error];
...
...
$props = file('config.properties', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$password = $props[0];
$link = mysql_connect($url, $usr, $password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
ip_address := OWA_SEC.get_client_ip;
IF ((OWA_SEC.get_user_id = 'scott') AND
(OWA_SEC.get_password = 'tiger') AND
(ip_address(1) = 144) and (ip_address(2) = 25)) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
...
...
props = os.open('config.properties')
password = props[0]
link = MySQLdb.connect (host = "localhost",
user = "testuser",
passwd = password,
db = "test")
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
require 'pg'
...
passwd = ENV['PASSWD']
...
conn = PG::Connection.new(:dbname => "myApp_production", :user => username, :password => passwd, :sslmode => 'require')
PASSWD
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
val prop = new Properties()
prop.load(new FileInputStream("config.properties"))
val password = prop.getProperty("password")
DriverManager.getConnection(url, usr, password)
...
config.properties
puede leer el valor de password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.plist
y la utiliza para descomprimir un archivo protegido con contraseña.
...
var myDict: NSDictionary?
if let path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") {
myDict = NSDictionary(contentsOfFile: path)
}
if let dict = myDict {
zipArchive.unzipOpenFile(zipPath, password:dict["password"])
}
...
...
Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, _
ByVal lpFileName As String) As Long
...
Dim password As String
...
password = GetPrivateProfileString("MyApp", "Password", _
"", value, Len(value), _
App.Path & "\" & "Config.ini")
...
con.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=scott;Passwd=" & password &";"
...
password
. Un empleado malintencionado con acceso a esta información puede utilizarla para irrumpir en el sistema.
...
password = ''.
...
...
URLRequestDefaults.setLoginCredentialsForHost(hostname, "scott", "");
...
Example 1
indica que la cuenta de usuario "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
var storedPassword:String = "";
var temp:String;
if ((temp = readPassword()) != null) {
storedPassword = temp;
}
if(storedPassword.equals(userPassword))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para userPassword
.
...
HttpRequest req = new HttpRequest();
req.setClientCertificate('mycert', '');
...
...
NetworkCredential netCred = new NetworkCredential("scott", "", domain);
...
Example 1
es correcto, indica que el inicio de sesión de las credenciales de red "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
string storedPassword = "";
string temp;
if ((temp = ReadPassword(storedPassword)) != null) {
storedPassword = temp;
}
if(storedPassword.Equals(userPassword))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para userPassword
.
...
rc = SQLConnect(*hdbc, server, SQL_NTS, "scott", SQL_NTS, "", SQL_NTS);
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
char *stored_password = "";
readPassword(stored_password);
if(safe_strcmp(stored_password, user_password))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para user_password
.
...
<cfquery name = "GetSSNs" dataSource = "users"
username = "scott" password = "">
SELECT SSN
FROM Users
</cfquery>
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
var password = "";
var temp;
if ((temp = readPassword()) != null) {
password = temp;
}
if(password == userPassword()) {
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para userPassword
.
...
response.SetBasicAuth(usrName, "")
...
...
DriverManager.getConnection(url, "scott", "");
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
String storedPassword = "";
String temp;
if ((temp = readPassword()) != null) {
storedPassword = temp;
}
if(storedPassword.equals(userPassword))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para userPassword
.
...
webview.setWebViewClient(new WebViewClient() {
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
String username = "";
String password = "";
if (handler.useHttpAuthUsernamePassword()) {
String[] credentials = view.getHttpAuthUsernamePassword(host, realm);
username = credentials[0];
password = credentials[1];
}
handler.proceed(username, password);
}
});
...
Example 2
, si useHttpAuthUsernamePassword()
devuelve false
, un usuario malintencionado podrá ver páginas protegidas si proporciona una contraseña vacía.
...
obj = new XMLHttpRequest();
obj.open('GET','/fetchusers.jsp?id='+form.id.value,'true','scott','');
...
{
...
"password" : ""
...
}
...
rc = SQLConnect(*hdbc, server, SQL_NTS, "scott", SQL_NTS, "", SQL_NTS);
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
NSString *stored_password = "";
readPassword(stored_password);
if(safe_strcmp(stored_password, user_password)) {
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para user_password
.
<?php
...
$connection = mysql_connect($host, 'scott', '');
...
?>
DECLARE
password VARCHAR(20);
BEGIN
password := "";
END;
...
db = mysql.connect("localhost","scott","","mydb")
...
...
conn = Mysql.new(database_host, "scott", "", databasename);
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.""
como valor predeterminado de la contraseña cuando no se especifica ninguno. En este caso, también debe asegurarse de que se especifica el número correcto de argumentos para garantizar que la contraseña se pasa a la función.
...
ws.url(url).withAuth("john", "", WSAuthScheme.BASIC)
...
...
let password = ""
let username = "scott"
let con = DBConnect(username, password)
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
var stored_password = ""
readPassword(stored_password)
if(stored_password == user_password) {
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, entonces un usuario malintencionado podría eludir trivialmente la comprobación de contraseña si proporciona una cadena vacía para user_password
.
...
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
con.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=scott;Passwd=;"
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
password = 'tiger'.
...
...
URLRequestDefaults.setLoginCredentialsForHost(hostname, "scott", "tiger");
...
...
HttpRequest req = new HttpRequest();
req.setClientCertificate('mycert', 'tiger');
...
...
NetworkCredential netCred =
new NetworkCredential("scott", "tiger", domain);
...
...
rc = SQLConnect(*hdbc, server, SQL_NTS, "scott",
SQL_NTS, "tiger", SQL_NTS);
...
...
MOVE "scott" TO UID.
MOVE "tiger" TO PASSWORD.
EXEC SQL
CONNECT :UID
IDENTIFIED BY :PASSWORD
AT :MYCONN
USING :MYSERVER
END-EXEC.
...
...
<cfquery name = "GetSSNs" dataSource = "users"
username = "scott" password = "tiger">
SELECT SSN
FROM Users
</cfquery>
...
...
var password = "foobarbaz";
...
javap -c
para acceder al código desensamblado, que contendrá los valores de las contraseñas utilizadas. El resultado de esta operación puede presentar un aspecto similar al siguiente en relación con el Example 1
:
javap -c ConnMngr.class
22: ldc #36; //String jdbc:mysql://ixne.com/rxsql
24: ldc #38; //String scott
26: ldc #17; //String tiger
password := "letmein"
...
response.SetBasicAuth(usrName, password)
...
DriverManager.getConnection(url, "scott", "tiger");
...
javap -c
para acceder al código desensamblado, que contendrá los valores de las contraseñas utilizadas. El resultado de esta operación puede presentar un aspecto similar al siguiente en relación con el Example 1
:
javap -c ConnMngr.class
22: ldc #36; //String jdbc:mysql://ixne.com/rxsql
24: ldc #38; //String scott
26: ldc #17; //String tiger
...
webview.setWebViewClient(new WebViewClient() {
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
handler.proceed("guest", "allow");
}
});
...
Example 1
, este código se ejecutará correctamente, pero cualquiera que tenga acceso a él, tendrá acceso a la contraseña.
...
obj = new XMLHttpRequest();
obj.open('GET','/fetchusers.jsp?id='+form.id.value,'true','scott','tiger');
...
...
{
"username":"scott"
"password":"tiger"
}
...
...
DriverManager.getConnection(url, "scott", "tiger")
...
javap -c
para acceder al código desensamblado, que contendrá los valores de las contraseñas utilizadas. El resultado de esta operación puede presentar un aspecto similar al siguiente en relación con el Example 1
:
javap -c ConnMngr.class
22: ldc #36; //String jdbc:mysql://ixne.com/rxsql
24: ldc #38; //String scott
26: ldc #17; //String tiger
...
webview.webViewClient = object : WebViewClient() {
override fun onReceivedHttpAuthRequest( view: WebView,
handler: HttpAuthHandler, host: String, realm: String
) {
handler.proceed("guest", "allow")
}
}
...
Example 1
, este código se ejecutará correctamente, pero cualquiera que tenga acceso a él, tendrá acceso a la contraseña.
...
rc = SQLConnect(*hdbc, server, SQL_NTS, "scott",
SQL_NTS, "tiger", SQL_NTS);
...
...
$link = mysql_connect($url, 'scott', 'tiger');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
...
DECLARE
password VARCHAR(20);
BEGIN
password := "tiger";
END;
password = "tiger"
...
response.writeln("Password:" + password)
...
Mysql.new(URI(hostname, 'scott', 'tiger', databasename)
...
...
ws.url(url).withAuth("john", "secret", WSAuthScheme.BASIC)
...
javap -c
para acceder al código desensamblado, que contendrá los valores de las contraseñas utilizadas. El resultado de esta operación puede presentar un aspecto similar al siguiente en relación con el Example 1
:
javap -c MyController.class
24: ldc #38; //String john
26: ldc #17; //String secret
...
let password = "secret"
let username = "scott"
let con = DBConnect(username, password)
...
Ejemplo 2: La siguiente cadena de conexión ODBC utiliza una contraseña con codificación rígida:
...
https://user:secretpassword@example.com
...
...
server=Server;database=Database;UID=UserName;PWD=Password;Encrypt=yes;
...
...
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
con.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=scott;Passwd=tiger;"
...
...
credential_settings:
username: scott
password: tiger
...
...
<param name="foo" class="org.jasypt.util.password.BasicPasswordEncoder">
...
</param>
...
import hashlib
def register(request):
password = request.GET['password']
username = request.GET['username']
hash = hashlib.md5(get_random_salt() + ":" + password).hexdigest()
store(username, hash)
...
require 'openssl'
def register(request)
password = request.params['password']
username = request.params['username']
salt = get_random_salt
hash = OpenSSL::Digest.digest("MD5", salt + ":" + password)
store(username, hash)
end
...
Null
pueden poner en peligro la seguridad.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
var storedPassword:String = null;
var temp:String;
if ((temp = readPassword()) != null) {
storedPassword = temp;
}
if(Utils.verifyPassword(userPassword, storedPassword))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para userPassword
.null
a las variables de contraseña nunca es una buena idea, ya que puede permitir que los atacantes eludan la verificación de contraseña o puede indicar que una contraseña vacía protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
string storedPassword = null;
string temp;
if ((temp = ReadPassword(storedPassword)) != null) {
storedPassword = temp;
}
if (Utils.VerifyPassword(storedPassword, userPassword)) {
// Access protected resources
...
}
...
ReadPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir fácilmente la comprobación de contraseña si proporciona un valor null
para userPassword
.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
string storedPassword = null;
string temp;
if ((temp = ReadPassword(storedPassword)) != null) {
storedPassword = temp;
}
if(Utils.VerifyPassword(storedPassword, userPassword))
// Access protected resources
...
}
...
ReadPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para userPassword
.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
char *stored_password = NULL;
readPassword(stored_password);
if(safe_strcmp(stored_password, user_password))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para user_password
.null
a las variables de contraseña nunca es una buena idea, ya que puede permitir que los atacantes eludan la verificación de contraseña o puede indicar que una contraseña vacía protege los recursos.null
a las variables de contraseña no es una buena idea ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
String storedPassword = null;
String temp;
if ((temp = readPassword()) != null) {
storedPassword = temp;
}
if(Utils.verifyPassword(userPassword, storedPassword))
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para userPassword
.null
, lee credenciales de un almacén WebView de Android si el servidor no las rechazó previamente para la solicitud actual y las usa para configurar la autenticación para ver páginas protegidas.
...
webview.setWebViewClient(new WebViewClient() {
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
String username = null;
String password = null;
if (handler.useHttpAuthUsernamePassword()) {
String[] credentials = view.getHttpAuthUsernamePassword(host, realm);
username = credentials[0];
password = credentials[1];
}
handler.proceed(username, password);
}
});
...
Example 1
, si useHttpAuthUsernamePassword()
devuelve false
, un usuario malintencionado podrá ver páginas protegidas si proporciona una contraseña null
.null
.null
:
...
var password=null;
...
{
password=getPassword(user_data);
...
}
...
if(password==null){
// Assumption that the get didn't work
...
}
...
null
a las variables de contraseña, ya que puede permitir que los atacantes eludan la verificación de contraseña o puede indicar que ninguna contraseña protege los recursos.null
.
{
...
"password" : null
...
}
null
. Las contraseñas Null
pueden poner en peligro la seguridad.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
NSString *stored_password = NULL;
readPassword(stored_password);
if(safe_strcmp(stored_password, user_password)) {
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para user_password
.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
<?php
...
$storedPassword = NULL;
if (($temp = getPassword()) != NULL) {
$storedPassword = $temp;
}
if(strcmp($storedPassword,$userPassword) == 0) {
// Access protected resources
...
}
...
?>
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para userPassword
.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
.
DECLARE
password VARCHAR(20);
BEGIN
password := null;
END;
null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
storedPassword = NULL;
temp = getPassword()
if (temp is not None) {
storedPassword = temp;
}
if(storedPassword == userPassword) {
// Access protected resources
...
}
...
getPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para userPassword
.nil
a las variables de contraseña no es una buena idea ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.nil
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
@storedPassword = nil
temp = readPassword()
storedPassword = temp unless temp.nil?
unless Utils.passwordVerified?(@userPassword, @storedPassword)
...
end
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para @userPassword
.nil
como valor predeterminado de la contraseña cuando no se especifica ninguno. En este caso, también debe asegurarse de que se especifica el número correcto de argumentos para garantizar que la contraseña se pasa a la función.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los atacantes omitan la verificación por contraseña o podría indicar que los recursos están protegidos por una contraseña vacía.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
ws.url(url).withAuth("john", null, WSAuthScheme.BASIC)
...
null
. Las contraseñas Null
pueden poner en peligro la seguridad.nil
a las variables de contraseña no es una buena idea ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
, intenta leer un valor almacenado para la contraseña y lo compara con un valor proporcionado por el usuario.
...
var stored_password = nil
readPassword(stored_password)
if(stored_password == user_password) {
// Access protected resources
...
}
...
readPassword()
no puede recuperar la contraseña almacenada debido a un error de base de datos o a algún otro problema, un atacante podría eludir trivialmente la comprobación de contraseña si proporciona un valor null
para user_password
.null
a las variables de contraseña no es una buena idea, ya que puede permitir que los usuarios malintencionados omitan la verificación de contraseña o podría indicar que una contraseña en blanco protege los recursos.null
y la utiliza para conectarse a una base de datos.
...
Dim storedPassword As String
Set storedPassword = vbNullString
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
con.ConnectionString = "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=scott;Passwd=" & storedPassword &";"
...
Example 1
es correcto, indica que la cuenta de usuario de base de datos "scott" se ha configurado con una contraseña vacía, que un usuario malintencionado puede adivinar fácilmente. Una vez que se haya distribuido el programa, actualizar la cuenta para que utilice una contraseña que no esté vacía requerirá un cambio de código.
...
* Default username for FTP connection is "scott"
* Default password for FTP connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
* Default username for database connection is "scott"
* Default password for database connection is "tiger"
...
...
<!-- Default username for database connection is "scott" -->
<!-- Default password for database connection is "tiger" -->
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
-- Default username for database connection is "scott"
-- Default password for database connection is "tiger"
...
...
# Default username for database connection is "scott"
# Default password for database connection is "tiger"
...
...
#Default username for database connection is "scott"
#Default password for database connection is "tiger"
...
...
// Default username for database connection is "scott"
// Default password for database connection is "tiger"
...
...
'Default username for database connection is "scott"
'Default password for database connection is "tiger"
...